Visual C# 在调用后直接删除 Click 事件
Visual C# removing a Click event directly after it has been invoked
我创建了 List
个 PictureBox
,并且在创建过程中附加了一个点击事件
gameDeckPics[i].Click += (sender, args) =>
{
// Code to execute on click
};
With i
引用当前添加到列表中的 Picturebox
的当前索引。使用 Click 事件时,我将 PictureBox 从 gameDeckPics
移动到另一个列表。我的问题是:如何在单击项目列表中的特定项目后立即删除它的 Click 事件?
当你像那样创建内联方法时,你不能这样做。创建一个单独的事件方法。
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;
}
我创建了 List
个 PictureBox
,并且在创建过程中附加了一个点击事件
gameDeckPics[i].Click += (sender, args) =>
{
// Code to execute on click
};
With i
引用当前添加到列表中的 Picturebox
的当前索引。使用 Click 事件时,我将 PictureBox 从 gameDeckPics
移动到另一个列表。我的问题是:如何在单击项目列表中的特定项目后立即删除它的 Click 事件?
当你像那样创建内联方法时,你不能这样做。创建一个单独的事件方法。
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;
}