C# 检测右键单击表单上的每个PictureBox
我想在表单中的任何C# 检测右键单击表单上的每个PictureBox,c#,C#,我想在表单中的任何PictureBox上检测右键单击。我已经为一个PictureBox设置了右键单击功能。这很好,但我希望有一个事件将触发所有右键单击表单上的PictureBoxs 此右键单击甚至需要知道PictureBox名称,因为某些PictureBox的上下文菜单将不同 下面是我为一个PictureBox的右键单击事件提供的代码 private void DesktopIcon1Icon_MouseClick(object sender, MouseEventArgs e) { s
PictureBox
上检测右键单击。我已经为一个PictureBox
设置了右键单击功能。这很好,但我希望有一个事件将触发所有右键单击表单上的PictureBoxs
此右键单击甚至需要知道PictureBox
名称,因为某些PictureBox
的上下文菜单将不同
下面是我为一个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;
}
您可以尝试使用反射查找所有PictureBox实例。 检查作为起点 检查此SO以了解实施示例:
您可以使用一个事件触发所有右键单击
图片框
,如下所示:
public Form1()
{
InitializeComponent();
pictureBox1.MouseClick += pictureBox_MouseClick;
pictureBox2.MouseClick += pictureBox_MouseClick;
}
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;
}
}
然后您可以使用Sender
查找PictureBox
的名称
,如下所示:
public Form1()
{
InitializeComponent();
pictureBox1.MouseClick += pictureBox_MouseClick;
pictureBox2.MouseClick += pictureBox_MouseClick;
}
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;
}
}
这个看起来不错,不太确定是否适合我的需要。但是谢谢。我认为不需要反射,您可以使用表单的Controls属性,并且
在每个控件上都是PictureBox
操作符。您可能需要在具有控件的子控件上递归。谢谢您,我现在可以使用它了。谢谢你的帮助。