C# 找出在哪个编程生成的对象上调用了contextmenu
在我的程序中,我通过右键单击->新建动态生成标签,格式如下:C# 找出在哪个编程生成的对象上调用了contextmenu,c#,winforms,contextmenu,C#,Winforms,Contextmenu,在我的程序中,我通过右键单击->新建动态生成标签,格式如下: private Point MouseDownLocation; private List<Label> labelList=new List<Label>(); private void mainContextMenu_Opening(object sender, CancelEventArgs e) { MouseDownLocation = PointToClient(MousePosition);
private Point MouseDownLocation;
private List<Label> labelList=new List<Label>();
private void mainContextMenu_Opening(object sender, CancelEventArgs e)
{
MouseDownLocation = PointToClient(MousePosition);
}
private void valueToolStripMenuItem_Click(object sender, EventArgs e)
{
Label label = new Label();
label.Location = MouseDownLocation;
label.AutoSize = true;
label.ContextMenuStrip = valueContextMenu;
label.Text = "test";
this.Controls.Add(label);
labelList.Add(label);
}
问题是,在此函数(正在调用)中,无法检索调用菜单的标签,因为发送方是contextmenu。请尝试检查ContextMenuStrip的SourceControl属性:
private void deleteToolStripMenuItem_Click(object sender, EventArgs e) {
Control c = ((ContextMenuStrip)((ToolStripMenuItem)sender).Owner).SourceControl;
if (c != null) {
// do something...
}
}
private void deleteToolStripMenuItem_Click(object sender, EventArgs e) {
Control c = ((ContextMenuStrip)((ToolStripMenuItem)sender).Owner).SourceControl;
if (c != null) {
// do something...
}
}