我已将contextMenuStrip分配给两个ListBox控件的相同上下文菜单属性。 我想确定其中哪些已激活上下文菜单。 因为我必须根据在运行时点击的控件来更改某些条目。
private void copyNotesToClipboardStripMenu_Click(object sender, EventArgs e)
{
ListBox cntrl = conMenuNotes.SourceControl as ListBox;
//cntrl does not contain info about which ListBox was clicked :((
//check which ListBox was clicked
if (/*oneListBox*/)
{
//do something
}
if(/*anotherLiskBox*/)
{
//do something
}
}
当我阅读其他帖子时,它应该是标签属性中点击控件的名称。
我看到 cntrl.Label null
我做错了什么? 建议我如何解决这种歧义。 谢谢!
答案 0 :(得分:1)
不是将菜单分配给两个控件,而是使用控件上的右键单击事件来执行这样的函数
copyNotesToClipboardStripMenu_Click
方法中,您可以访问存储点击控件的全局变量另外,请不要忘记在完成后将全局设置为null
,并确保在使用时使用lock
。
答案 1 :(得分:0)
我发现一个适合我的结果
private void copyNotesToClipboardStripMenu_Click(object sender, EventArgs e)
{
ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
if (menuItem != null)
{
ContextMenuStrip calendarMenu = menuItem.Owner as ContextMenuStrip;
if (calendarMenu != null)
{
Control controlSelected = calendarMenu.SourceControl;
}
}
}
controlSelected 对象的属性名称包含已激活上下文菜单的控件名称。