【问题标题】:ContextMenuStrip item reference problemContextMenuStrip 项引用问题
【发布时间】:2009-12-17 08:00:50
【问题描述】:

我在这里搜索过,但没有找到我要找的东西。

我正在使用 ContextMenuStrip,其中有一个菜单项是选中/未选中项。结构如下:

顶级:设置 中层:处理 底层:人工处理

我找不到访问底层项目的方法,将其设置为选中或未选中。

有人可以帮忙吗?

【问题讨论】:

    标签: c# checked contextmenustrip


    【解决方案1】:

    不确定我是否在关注这个问题。你知道“底层物品”的名称吗?如果是这样,只需按名称引用它:

    bottomLevelMenuItem.Checked = true;
    

    如果您不知道名称,您可以遍历 Items 或 DropDownItems(取决于 MenuItem 类型)控件集合以找到您想要的名称。

    foreach (ToolStripMenuItem stripItemCollection in MenuStrip.Items)
    {
        ...
    }
    

    编辑:

    正确,ToolStripItem 没有选中的属性。它是许多工具条对象的基类,其中一些不支持检查。在这种情况下,您可能正在处理具有已选中属性的ToolStripMenuItems。

    试试这个:

    ToolStripMenuItem menuItem = this.cmuSystemTray.Items["TLSETTINGS"] as ToolStripMenuItem;
    if (menuItem != null)
    {
        menuItem.Checked = true;
    }
    

    同样,虽然每个 Control (ToolStripMenuItem) 都有一个与之关联的名称,因此使用原始变量比通过上下文菜单条的 Items 属性更容易。

    TLSETTINGS.Checked = true; // Assuming TLSETTINGS is the name
    

    【讨论】:

    • 我的意思是我是否执行以下操作: ToolStripItem tItem = this.cmuSystemTray.Items["TLSETTINGS"] 我尝试了 this.cmuSystemTray.Items["TLSETTINGS"] 和 .Checked 是不是我可以访问的属性
    • 我很抱歉这对你们造成了影响。实际上 TLSETTINGS 是顶级菜单项的“名称”。 TLMANUAL 项目位于 TLSETTINGS 下拉菜单中。所以我需要参考 LTMANUAL 项目。这是我所拥有的,但我被卡住了: ToolStripItem tItem = this.cmuSystemTray.Items["TLSETTINGS"];从这一点开始,我无法在 iItem 中获得较低级别的项目,谁能帮助或指导我在线上的一个好例子?
    • Ohhhhhh,没关系,我明白你现在在说什么,不知道我可以使用。感谢您的帮助。
    猜你喜欢
    • 2010-10-05
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多