gpt4 book ai didi

c# - 在 C# 中,如何防止 PreviewKeyDown 事件在特定代码完成之前被多次按下?

转载 作者:行者123 更新时间:2023-12-02 04:42:39 26 4
gpt4 key购买 nike

我设置了一个相机应用程序,我的问题是人们可以多次按下按钮,导致脚本困惑:

private void mainWinForm_PreviewKeyDown_1(object sender, PreviewKeyDownEventArgs e) {
if (e.KeyCode == Keys.Space) {
var timer = new System.Timers.Timer(1000);
int count = 0;
timer.SynchronizingObject = this;
timer.AutoReset = true;
timer.Elapsed += delegate {
count++;
if (count == 1) {
label1.Text = File.ReadAllText("Countdown_3.txt");
}
if (count == 3) {
label1.Text = File.ReadAllText("Countdown_2.txt");
}
if (count == 5) {
label1.Text = File.ReadAllText("Countdown_1.txt");
}
if (count == 7) {
webcam.Stop();
label1.Text = File.ReadAllText("ImageCapturedPlusFrozen.txt");
}
if (count == 9) {
label1.Text = File.ReadAllText("IdleForPreview.txt");
label1.Refresh();
Directory.CreateDirectory(DateTime.Now.ToString("yyyy-MM-dd"));
using (Bitmap bmp = new Bitmap(imgVideo.ClientSize.Width, imgVideo.ClientSize.Height)) {
using (Graphics g = Graphics.FromImage(bmp)) {
g.DrawImage(imgVideo.Image,
new Rectangle(0, 0, bmp.Width, bmp.Height),
new Rectangle(0, 0, imgVideo.Image.Width, imgVideo.Image.Height),
GraphicsUnit.Pixel);
}
bmp.Save(DateTime.Now.ToString("yyyy-MM-dd") + "/ " + DateTime.Now.ToString("HH-mm-ss") + ".png", ImageFormat.Png);
}
}
if (count == 20) {
label1.Text = "Press Button to Start!";
webcam.Start();
timer.Stop();
}
};
timer.Start();
}
}

在计时器结束之前,我如何才能禁用按键?我试过 KeyPreview = false;但这行不通!

最佳答案

您可以添加一个 bool 标志来指示是否有工作正在完成。然后在按下键时检查该标志。

bool flag = false;

private void mainWinForm_PreviewKeyDown_1(object sender, PreviewKeyDownEventArgs e)
{
if (!flag)
{

flag = true;
\\.....
if (count == 20)
{
\\.......
timer.Stop();
flag = false;
}

timer.Start();
}
}

关于c# - 在 C# 中,如何防止 PreviewKeyDown 事件在特定代码完成之前被多次按下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20480884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com