检测右键单击哪个图片框

时间:2014-02-15 17:30:38

标签: c# .net winforms

在我的应用程序中,您右键单击一个图片框,它会带一个工具条项目来更改该图片框图像,当您单击一个选项时,我的问题是如何知道正在单击哪个图片框以便只更改图像右键单击的图片框而不是为每个图片框创建1个工具条项目?

更新,找到了解决方案。

private void redToolStripMenuItem_Click(object sender, EventArgs e)
{
    var box = ((ContextMenuStrip)(((ToolStripMenuItem)sender).Owner)).
              SourceControl;
    if (box == PictureBox1)
    {
        PictureBox1.Image = Form1.Properties.Resources.red_square_button;
    }
    else if (box == PictureBox2)
    {
        PictureBox2color = "red";
        PictureBox2.Image = Form1.Properties.Resources.red_square_button;
    }
}

说明:单击工具条菜单项时,代码只会影响右键单击的图片框。

1 个答案:

答案 0 :(得分:3)

将相同的事件处理程序订阅到所有图片框的MouseClick事件。然后将事件的发送者强制转换为PictureBox以获取引发事件的图片框实例:

private void pictureBox_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button != MouseButtons.Right)
        return;

    PictureBox picutreBox = (PictureBox)sender; 
    // use picutreBox
}
相关问题