上下文菜单父级?

时间:2009-08-26 11:46:45

标签: c# winforms contextmenu

您好我在标签上添加了一个上下文菜单(c#,winforms)。我的上下文菜单有3个子项,我想在点击任何一个上下文菜单项时显示标签文本。

提前致谢

3 个答案:

答案 0 :(得分:21)

ContextMenuStrip控件具有SourceControl属性,该属性将引用打开它的控件。您可以使用它从控件中提取文本:

private void MenuStripItem_Click(object sender, EventArgs e)
{
    ToolStripItem item = (sender as ToolStripItem);
    if (item != null)
    {
        ContextMenuStrip owner = item.Owner as ContextMenuStrip;
        if (owner != null)
        {
            MessageBox.Show(owner.SourceControl.Text);
        }
    }
}

如果您使用ContextMenuStrip代替ContextMenu,则代码应如下所示:

private void menuItem1_Click(object sender, EventArgs e)
{
    MenuItem item = (sender as MenuItem);
    if (item != null)
    {
        ContextMenu owner = item.Parent as ContextMenu;
        if (owner != null)
        {
            MessageBox.Show(owner.SourceControl.Text);
        }
    }
}

答案 1 :(得分:1)

这是一行中最好的:

Control control = ((ContextMenuStrip)((ToolStripItem)sender).Owner).SourceControl;

答案 2 :(得分:0)

获取上下文菜单父控件名称 MessageBox.Show(contextMenuStrip1.SourceControl.Name.ToString());