C#如何在单击的内容上显示或传递值

C#如何在单击的内容上显示或传递值,c#,click,C#,Click,我有一些代码可以创建带有图片框的面板。我想告诉我点击了什么图片框。 我正在使用以下命令: PicBx[z].Click += new EventHandler(clicked); 我需要在单击时指定一个值吗?或者,是否有一种方法可以显示您单击的内容?处理程序方法获取被单击的控件作为其发送方参数。 您可以将其强制转换到PictureBox,并对其执行任何操作 或者,您可以将添加为处理程序: PicBx[z].Click += delegate { SomeMethod(z, somethingE

我有一些代码可以创建带有图片框的面板。我想告诉我点击了什么图片框。 我正在使用以下命令:

PicBx[z].Click += new EventHandler(clicked);

我需要在单击时指定一个值吗?或者,是否有一种方法可以显示您单击的内容?

处理程序方法获取被单击的控件作为其
发送方
参数。
您可以将其强制转换到
PictureBox
,并对其执行任何操作

或者,您可以将添加为处理程序:

PicBx[z].Click += delegate { SomeMethod(z, somethingElse); };

但是,请确保。

单击的方法中确实传递了一个参数(对象发送方)。这是已单击的PictureBox。

事件处理程序的签名中将包含两个参数:
对象发送者
事件参数e
sender
是您单击的对象,因此您可以将其强制转换为
PictureBox
或任何实际类型,您应该准备好了

您的
EventHandler
是否有
objectsender
参数?我使用的是foreach循环,因此如果使用委托,它将使z成为最后输入的值。是否有一种方法可以使创建的每个Picturebox都独一无二?是的;您需要在循环中声明一个单独的变量。知道了!Put
intz2=z在循环中并使用
PicBx[z]。单击+=delegate{clicked(z2,null);}工作得很有魅力!但问题是有多个PictureBox是通过foreach循环创建的。ObjectSender将只创建最后一个picturebox值。我需要能够单击创建的图片框并返回该图片框的唯一值。@user:
sender
不是来自闭包;它将始终包含触发事件的实际PictureBox。