我想检测右键单击表单中的任何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;
}

最佳答案

您可以使用一个事件来触发所有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(e.X, e.Y));
        }
        break;
    }
}

关于c# - 检测右键单击窗体上的每个PictureBox,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35528548/

10-17 02:33