问题
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