检测右键单击窗体上的每个PictureBox

我想要检测表单中任何PictureBox的右键单击。 我已经为一个PictureBox设置了右键单击function。 这很好,但我想要一个事件将触发表单上PictureBoxes所有正确点击。

这个右键单击甚至需要知道PictureBox名称,因为某些PictureBoxes的上下文菜单会有所不同。

这是我为一个PictureBox的右键单击事件所拥有的代码。

 private void DesktopIcon1Icon_MouseClick(object sender, MouseEventArgs e) { switch (e.Button) { case MouseButtons.Right: { DesktopIconRightclick.Show(this, new Point(eX, eY)); } break; } } 

如果右键单击任何PictureBox我需要调整此代码。

示例更新

 if (pic = DesktopIcon2) { openToolStripMenuItem.visible = false; } 

您可以使用一个事件来触发PictureBoxes上的所有右键单击,如下所示:

 public Form1() { InitializeComponent(); pictureBox1.MouseClick += pictureBox_MouseClick; pictureBox2.MouseClick += pictureBox_MouseClick; } 

然后你可以使用Sender找到PictureBoxName如下所示:

 private void pictureBox_MouseClick(object sender, MouseEventArgs e) { var pic = (sender as PictureBox).Name;//pic is the Name of the PictureBox that is clicked switch (e.Button) { case MouseButtons.Right: { MessageBox.Show(pic);//Just for example DesktopIconRightclick.Show(this, new Point(eX, eY)); } break; } } 

您可以尝试使用reflection来查找所有PictureBox实例。 检查GetTypes作为起点。

检查此SO以获取实现示例: 使用reflection获取dll中某些基类型的所有类