2014-02-15 50 views
0

在我的应用程序中,你右键单击一个图片框,它带来了一个tooltrip项目来改变该图片框图像,当你点击一个选项,我的问题是如何知道哪个图片框被点击为了只更改被右键单击的图片框的图像,而不是为每个图片框创建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; 
    } 
} 

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

回答

3

订阅相同的事件处理程序到MouseClick事件的所有图片框。然后抹上事件的发送者PictureBox得到的PictureBox的实例,它引发的事件:

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

    PictureBox picutreBox = (PictureBox)sender; 
    // use picutreBox 
} 
+0

那么什么是点击工具条项目时怎么办? – Joscplan

+0

@JoseCardama你想*'检测哪个图片框被右键点击'*。如果你想以后使用它,那么你可以将它保存在'CurrentPictureBox'字段中 –

+0

我想要的是当单击一个工具条项目时,改变被右键单击的图片框的图像。 – Joscplan