这是一个鼠标单击菜单条控件时改变窗体颜色的问题,窗口的菜单条控件有红色,蓝色,绿色 
常规方法是
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.   

    ToolStripMenuItem item = (ToolStripMenuItem)sender;
      

  2.   

     String name = ((ToolStripItem)sender).Text;
    这样就好了
      

  3.   

    一楼简介的代码一针见血很是犀利啊!
    ToolStripMenuItem 是什么的?小弟初学C#我看得不是很懂呢 能解释一下吗?二楼得代码也是看得似懂非懂,能解释一下么?哎,看来上来提问也是要有点水平的啊.....
      

  4.   

    sender应该只是一个媒介,你看下整个参数,也就是sender无法告知系统,客户选择了什么string,因为用户通过鼠标的消息只有坐标和点击。如果你想通过让客户点击字符来确定他的选择,你要通过EventArgs e这个对象来修改了。只是凭直觉说的不知道对不对
      

  5.   

    无法将类型为“System.Windows.Forms.ToolStripMenuItem”的对象强制转换为类型“System.Windows.Forms.MenuStrip”。就说明当前的对象是ToolStripMenuItem而不是MenuStrip!
      

  6.   


    ToolStripMenuItem是类型,
    string Choice = ((MenuStrip)sender).Text;
    这里sender是ToolStripMenuItem类型的,你把它强制转换成MenuStrip类型就出错了,按照二楼的方法就可以了
      

  7.   


    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;
                }
            }
      

  8.   

    感谢所有的人!!问题解决了哈哈~~还是CSDN温暖啊!那是这个贴发在别处,字都被风化得模糊不清了都没人问津~~~~再次感谢!