Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 找出在哪个编程生成的对象上调用了contextmenu_C#_Winforms_Contextmenu - Fatal编程技术网

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...
  }
}