Deselect ToolStripItem on ContextMenuStrip

1.6k Views Asked by At

Simple question:

I can .Select a ToolStripItem (like, if i want a preselected option when opening a context menu strip) but i cannot seem to find a way to set .Selected to false or somehow deselect it!

Is it possible?

3

There are 3 best solutions below

2
On BEST ANSWER

There is private method ClearAllSelections in ToolStrip class, which removes selections from items. You can invoke it via reflection:

MethodInfo method = typeof(ToolStrip).GetMethod("ClearAllSelections", BindingFlags.NonPublic | BindingFlags.Instance);
method.Invoke(yourContextMenuStrip, null);

All selections will be removed.

1
On

You're looking for the Checked property?

public void mnuUncheck()
{
    foreach (ToolStripMenuItem Item in mnuStripMain.Items)
    {
       Item.Checked = false;
    }
}
0
On

Taking the approach of Sergey, there is also an internal method on the ToolStripItem which you could call:

MethodInfo methodInfo = typeof(ToolStripItem).GetMethod("Unselect", BindingFlags.NonPublic | BindingFlags.Instance);
methodInfo.Invoke(yourToolStripItem, null);