无法在其onClick事件中修改ToolStripMenuItems的属性

时间:2012-11-05 10:31:07

标签: c# .net winforms

在我的onClick事件处理程序中,我正在做类似的事情:

private void myToolStripItem_Click(object sender, EventArgs e)
    {
        Form form = (Form)(((taskBarToolStripMenuItem)sender).formReference);

        if (form != this.ActiveMdiChild)
        {
            if (!form.Visible)
                form.Show();
            form.Activate();

            ((taskBarToolStripMenuItem)sender).isSelected = true; //set it to true, so the renderer will draw them differently
        }
    }

taskBarToolStripMenuItem是ToolStripMenuItem的子类。当我到达我的自定义ToolStripSystemRenderer时,我确定将其“isSelected”属性更改为true的项保持为false。这种情况发生在其他属性上,我试过Tag,Text等等......为什么?感谢

1 个答案:

答案 0 :(得分:0)

您要做的是将sender转换为ToolStripMenuItem的实例。
尝试转换为类型而不是这样。

((ToolStripMenuItem)sender).Selected = true;

如果您打算在多个地方使用它,可以将其设置为临时变量,以避免每次都取消装箱。

private void myToolStripItem_Click(object sender, EventArgs e)
{
    var item = (ToolStripMenuItem)sender; // temp variable
    Form form = (Form)(item.formReference);

    if (form != this.ActiveMdiChild)
    {
        if (!form.Visible)
            form.Show();
        form.Activate();

        item.Selected = true; //set it to true, so the renderer will draw them differently
    }
}