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

时间:2016-02-20 20:23:36

标签: c#

我想要检测表单中任意PictureBox的右键点击。我已经为一个PictureBox设置了右键单击功能。这样很好,但我希望在表单上的PictureBoxes上点击所有正确的点击事件。

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

以下是我对一个PictureBox的右键单击事件所拥有的代码。

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

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

示例更新

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

2 个答案:

答案 0 :(得分:3)

您可以使用一个事件来触发PictureBoxes上的所有正确点击:

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

然后您可以使用Sender来查找PictureBox的{​​{1}},如下所示:

Name

答案 1 :(得分:-1)

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

检查此SO以获取实施示例: Using reflection to get all classes of certain base type in dll