检测右键单击窗体上的每个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
找到PictureBox
的Name
如下所示:
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中某些基类型的所有类