context menu parent?

╄→гoц情女王★ 提交于 2019-12-03 18:01:34

问题


Hi I added a context menu on label (c#, winforms). my context menu having 3 child items and i want to display label text when i click on any one of context menu items.

thanks in advance


回答1:


The ContextMenuStrip control has a SourceControl property, that will have a reference to the control that opened it. You can use that to extract the text from the control:

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);
        }
    }
}

If you instead of a ContextMenuStrip use a ContextMenu, the code should look like this:

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);
        }
    }
}



回答2:


Its the best in one line:

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



回答3:


Get Context Menu Parent Control Name MessageBox.Show(contextMenuStrip1.SourceControl.Name.ToString());



来源:https://stackoverflow.com/questions/1334155/context-menu-parent

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!