【问题标题】:Deselect ToolStripItem on ContextMenuStrip取消选择 ContextMenuStrip 上的 ToolStripItem
【发布时间】:2012-04-25 20:27:31
【问题描述】:

简单的问题:

我可以.SelectToolStripItem (例如,如果我在打开上下文菜单条时想要一个预选选项),但我似乎找不到将.Selected 设置为false 或以某种方式取消选择它的方法!

有可能吗?

【问题讨论】:

    标签: c# winforms contextmenustrip toolstripitem


    【解决方案1】:

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

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

    所有选择都将被删除。

    【讨论】:

    • Omfg.... 好吧,Micro$oft 在它最好的 agian :) 在不应该的时候将某些东西设为私有。嗯,还是谢谢你的回答!
    • @lazyberezovsky: 很棒的信息...节省我的时间:)
    【解决方案2】:

    您正在寻找 Checked 属性?

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

    【讨论】:

    • 选中的是菜单条项目附近的“v”符号,对吗?我说的是选择,当您将鼠标悬停在上下文菜单项上时会发生什么。
    【解决方案3】:

    采用 Sergey 的方法,ToolStripItem 上还有一个内部方法,您可以调用它:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多