This question is about, how can I manually manage the un/checking of additional ToolStripMenuItems
on a component, without binding a variable to the item?
Let’s say my component has an internal variable
bool foo = true;
which I want to toggle on the right-click menu by adding an item. My question is, why does this work:
bool foo = true;
protected override void AppendAdditionalComponentMenuItems(ToolStripDropDown menu)
{
base.AppendAdditionalComponentMenuItems(menu);
var fooToggle = Menu_AppendItem(menu, "Foo Toggle", FooHandler, true, this.foo);
fooToggle.ToolTipText = "Desc text";
}
protected void FooHandler(object sender, EventArgs e)
{
this.foo = !this.foo;
this.Message = this.foo.ToString();
this.ExpireSolution(true);
}
But this doesn’t?
bool foo = true;
protected override void AppendAdditionalComponentMenuItems(ToolStripDropDown menu)
{
base.AppendAdditionalComponentMenuItems(menu);
var fooToggle = Menu_AppendItem(menu, "Foo Toggle", FooHandler, true, true);
fooToggle.ToolTipText = "Desc text";
}
protected void FooHandler(object sender, EventArgs e)
{
var item = sender as ToolStripMenuItem;
item.Checked = !item.Checked; // manually un/check the item
this.foo = item.Checked; // manage the value myself
this.Message = this.foo.ToString();
this.ExpireSolution(true);
}