2012-04-25 60 views
1

简单问题:取消的ToolStripItem上的ContextMenuStrip

我可以.Select一个ToolStripItem(比如,如果我想打开一个上下文菜单条时预选的选项),但我似乎无法找到一种方法来设置.Selected为false或以某种方式取消选择!

可能吗?

回答

3

ToolStrip类中有私有方法ClearAllSelections,它从项目中删除选择。您可以通过反射调用它:

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

所有选择都将被删除。

+0

Omfg ....好吧,Micro $ oft在其最好的礼物:)当它不应该是私人的东西时。好吧,谢谢你的回答! – Istrebitel 2012-04-27 08:36:53

+0

@lazyberezovsky:很棒的信息...节省我的时间:) – 2012-10-23 05:37:15

0

您正在寻找Checked物业?

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

经过近一个菜单条项的“V”标志,对不对?我在谈论选择,当你将鼠标悬停在上下文菜单项上时会发生什么。 – Istrebitel 2012-04-26 05:40:01

0

以谢尔盖的做法,也有在ToolStripItem的内部方法,你可以调用:

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