首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查找ToolStripMenuItem所属的ContextMenuStrip?

如何查找ToolStripMenuItem所属的ContextMenuStrip?
EN

Stack Overflow用户
提问于 2012-10-01 17:14:45
回答 1查看 2K关注 0票数 0

我有一个ContextMenuStrip,其中一个项目有一个DropDownItems属性,该属性是动态添加的ToolStripMenuItem对象的集合。当我处理子项Click事件时,发送者的类型是ToolStripMenuItem,但它的OwnerToolStripDropDownMenu。我找不到如何从这里确定“主机”ContextMenuStrip。它没有自己的Owner属性,并且Parent返回null。

当我使用下面@Steve发布的代码的改编版本时:

代码语言:javascript
复制
Dim dropDownItem = DirectCast(sender, ToolStripDropDownItem)
Dim menu As ContextMenuStrip = DirectCast((((dropDownItem.DropDown).OwnerItem).OwnerItem).Owner, ContextMenuStrip)
Dim grid = menu.SourceControl

然后menu.SourceControlNothing,然而当我处理顶层,即非下拉菜单项的单击时,如下所示

代码语言:javascript
复制
Dim item As ToolStripMenuItem = DirectCast(sender, ToolStripMenuItem)
Dim strip As ContextMenuStrip = DirectCast(item.Owner, ContextMenuStrip)
Dim grid As DataGridView = DirectCast(strip.SourceControl, DataGridView)

然后我得到了我想要的网格。

EN

回答 1

Stack Overflow用户

发布于 2012-10-01 18:13:31

如果我理解正确的话,您希望从属于ToolStripDropDownMenu的ToolStripMenuItem的Click事件内部访问ContextMenuStrip对象。

如果是这样的话

代码语言:javascript
复制
   private void TestToolStripMenuItem_Click(object sender, EventArgs e)
    {
        ToolStripDropDownItem x = sender as ToolStripDropDownItem;
        if (x != null)
        {
            ContextMenuStrip k = (((x.DropDown).OwnerItem).OwnerItem).Owner as ContextMenuStrip;
            k.ForeColor = Color.Red; // as an example.
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12670439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档