1

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 のままになります。これは他のプロパティで発生します。タグ、テキストなどを試しました...なぜですか? ありがとう

4

1 に答える 1

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
    }
}
于 2012-11-05T11:06:38.653 に答える