1

我有一些动态创建PictureBox的 's 和ContextMenu一个ToolStripMenuItem名为“Remove”的...我只想删除PictureBox被点击的,但它ContextMenu附加到所有PictureBox's。

怎么做 ?请解释一下,因为我还是个初学者。

4

1 回答 1

3

您必须遵循菜单所有者链,直到您到达控件:

private void RemoveMenuItem_Click(object sender, EventArgs e) {
  ToolStripMenuItem ti = sender as ToolStripMenuItem;
  ContextMenuStrip cs = ti.Owner as ContextMenuStrip;
  PictureBox pb = cs.SourceControl as PictureBox;
  MessageBox.Show(pb.Name);  // or pb.Dispose();
}

此代码没有进行任何错误检查。在尝试访问其任何属性之前,您应该检查这些变量是否为空。

Cody Gray 在这里给出了一个全面的答案:Determine what control the ContextMenuStrip was used on

于 2013-11-11T17:10:37.753 回答