13

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

提前致谢

4

3 回答 3

27

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使用 a 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);
        }
    }
}
于 2009-08-26T11:55:26.980 回答
2

它是最好的一行:

Control control = ((ContextMenuStrip)((ToolStripItem)sender).Owner).SourceControl;
于 2018-12-29T13:32:45.510 回答
1

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

于 2016-03-23T10:57:50.140 回答