Visual C#在调用Click事件后直接删除该事件
我已经创建了Visual C#在调用Click事件后直接删除该事件,c#,list,visual-studio-2013,onclick,C#,List,Visual Studio 2013,Onclick,我已经创建了图片盒的列表,并在创建过程中附加了一个点击事件 gameDeckPics[i].Click += (sender, args) => { // Code to execute on click }; i引用当前添加到列表中的Picturebox的当前索引。使用单击事件时,我会将PictureBox从gameDeckPics移动到另一个列表。我的问题是
图片盒的列表
,并在创建过程中附加了一个点击事件
gameDeckPics[i].Click += (sender, args) =>
{
// Code to execute on click
};
i
引用当前添加到列表中的Picturebox
的当前索引。使用单击事件时,我会将PictureBox从gameDeckPics
移动到另一个列表。我的问题是:如何在单击后直接从项目列表中的特定项目中删除单击事件?当您创建这样的内联方法时,您不能这样做。创建一个单独的事件方法
private void picBox_Click(object sender, EventArgs e)
{
// Code to execute on click
}
然后,您可以通过以下方式进行订阅和取消订阅:
gameDeckPics[i].Click += picBox_Click;
gameDeckPics[i].Click -= picBox_Click;
如果要在某个特定的PictureBox
的单击事件首次触发时取消订阅,可以在单击事件中执行
private void picBox_Click(object sender, EventArgs e)
{
// Code to execute on click
((PictureBox)sender).Click -= pictureBox1_Click;
}
啊,太好了,我现在明白了。优雅的解决方案,谢谢+1.