Visual C# 在调用后直接删除 Click 事件

Visual C# removing a Click event directly after it has been invoked

我创建了 ListPictureBox,并且在创建过程中附加了一个点击事件

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;
}