这是一个鼠标单击菜单条控件时改变窗体颜色的问题,窗口的菜单条控件有红色,蓝色,绿色
常规方法是
1. // 红色
private void tsmiRed_Click(object sender, EventArgs e)
{
this.BackColor = Color.Red;
} // 绿色
private void tsmiGreen_Click(object sender, EventArgs e)
{
this.BackColor = Color.Green;
} // 蓝色
private void tsmiBlue_Click(object sender, EventArgs e)
{
this.BackColor = Color.Blue;
} 我想把代码改为
2.private void tsmiColor_Click(object sender, EventArgs e)
{
string Choice = ((MenuStrip)sender).Text;
if (Choice == "红色")
{
this.BackColor = Color.Red;
}
else if (Choice == "蓝色")
{
this.BackColor = Color.Blue;
}
else if (Choice == "绿色")
{
this.BackColor = Color.Green;
}
}运行代码2的时候系统报错了 string Choice = ((MenuStrip)sender).Text;的那行报错提示
无法将类型为“System.Windows.Forms.ToolStripMenuItem”的对象强制转换为类型“System.Windows.Forms.MenuStrip”。谁跟我解释一下为什么会这样呢? 要怎么改代码才行?
常规方法是
1. // 红色
private void tsmiRed_Click(object sender, EventArgs e)
{
this.BackColor = Color.Red;
} // 绿色
private void tsmiGreen_Click(object sender, EventArgs e)
{
this.BackColor = Color.Green;
} // 蓝色
private void tsmiBlue_Click(object sender, EventArgs e)
{
this.BackColor = Color.Blue;
} 我想把代码改为
2.private void tsmiColor_Click(object sender, EventArgs e)
{
string Choice = ((MenuStrip)sender).Text;
if (Choice == "红色")
{
this.BackColor = Color.Red;
}
else if (Choice == "蓝色")
{
this.BackColor = Color.Blue;
}
else if (Choice == "绿色")
{
this.BackColor = Color.Green;
}
}运行代码2的时候系统报错了 string Choice = ((MenuStrip)sender).Text;的那行报错提示
无法将类型为“System.Windows.Forms.ToolStripMenuItem”的对象强制转换为类型“System.Windows.Forms.MenuStrip”。谁跟我解释一下为什么会这样呢? 要怎么改代码才行?
这样就好了
ToolStripMenuItem 是什么的?小弟初学C#我看得不是很懂呢 能解释一下吗?二楼得代码也是看得似懂非懂,能解释一下么?哎,看来上来提问也是要有点水平的啊.....
ToolStripMenuItem是类型,
string Choice = ((MenuStrip)sender).Text;
这里sender是ToolStripMenuItem类型的,你把它强制转换成MenuStrip类型就出错了,按照二楼的方法就可以了
private void tsmiColor_Click(object sender, EventArgs e)
{
string Choice = ((ToolStripMenuItem)sender).Text;
if (Choice == "红色")
{
this.BackColor = Color.Red;
}
else if (Choice == "蓝色")
{
this.BackColor = Color.Blue;
}
else if (Choice == "绿色")
{
this.BackColor = Color.Green;
}
}