c# - 条件为假时执行 IF 语句 C#
问题描述
- 我一开始尝试禁用按钮,但没有奏效
- 因此我创建了一个变量来防止它在 IF 中运行代码。由于某些奇怪的原因它不起作用,当我尝试在睡眠之前单击它时,它会在时间结束后立即执行。
所以如果我点击按钮
- 一次它睡了 2 秒,
- 如果我双击它,它会休眠 4 秒(等等),尽管它应该只休眠 2 秒。
这应该使代码仅在再次启用按钮后才会执行。(被禁用的按钮只是为了外观)
注意:变量“button_enabled”是全局变量
private void senha_b_Click(object sender, EventArgs e)
{
if (button_enabled == 1)
{
button_enabled = 0;
wait_label.Show();
senha_a.Enabled = false;
senha_b.Enabled = false;
senha_c.Enabled = false;
System.Threading.Thread.Sleep(2000);
wait_label.Hide();
senha_a.Enabled = true;
senha_b.Enabled = true;
senha_c.Enabled = true;
button_enabled = 1;
}
}
解决方案
这应该解决它
private async void senha_b_Click(object sender, EventArgs e)
{
if (button_enabled == 1)
{
button_enabled = 0;
wait_label.Show();
senha_a.Enabled = false;
senha_b.Enabled = false;
senha_c.Enabled = false;
await Task.Delay(2000);
wait_label.Hide();
senha_a.Enabled = true;
senha_b.Enabled = true;
senha_c.Enabled = true;
button_enabled = 1;
}
}
推荐阅读
- c++ - 异步/未来参数损坏 C++
- python - TF-IDF 和文本块
- javascript - 优化正则表达式中固定字符串替代的长列表
- javascript - Highcharts 百分比分布图问题
- sql - 尝试来自 4 个不同表的所有行,Clickhouse 在使用 union all 时未检测到表
- python - 比较数据框中的重复行以确定通过/失败
- android-studio - 如何解决从服务器接收到的状态码 401:未经授权的问题?
- .net-core - Azure Devops Release Pipeline 的 Azure Static Web App (SWA) 步骤与 dotnet api
- r - 无法从数据集中删除变量
- java - JavaFX 中是否有办法根据单独文本字段中的过去输入显示文本字段?