如何检查单击事件是否已在处理C#Winforms

问题描述 投票:0回答:1

我有这样的方法:

private async void BtnGivePermit_Click(object sender, EventArgs e)
{
    //some code here
}

[我正在尝试将一个按钮添加到“取消”,我想在那儿检查是否没有其他任何单击事件。如何在C#中做到这一点?

c# .net winforms event-handling buttonclick
1个回答
0
投票

按照Ash的建议,您可能希望像这样使用布尔值:

bool isGivePermitProcessing = false;
private void BtnGivePermit_Click(object sender, EventArgs e)
{
    isGivePermitProcessing = true;
    try {
        ...
    } finally {
        isGivePermitProcessing = false;
    }
}

这将使您对函数是否正在处理有明确的了解。

try-finally块确保没有异常会导致isGivePermitProcessing布尔值无限期变为true。


将上述概念扩展到Jimi的建议中,您也可以像这样简单地禁用按钮:

private void BtnGivePermit_Click(object sender, EventArgs e)
{
    BtnGivePermit.Enabled = false;
    try {
        ...
    } finally {
        BtnGivePermit.Enabled = true;
    }
}

这还将使您对功能是否正在处理有一定的了解,同时还可以防止在已经处理上一次单击时单击按钮。


如果您打算为异步操作设置一个取消按钮,则可能要研究CancellationToken类型。

© www.soinside.com 2019 - 2024. All rights reserved.