C# 让程序等待按钮被按下

标签 c# loops button wait boolean

我想让程序在继续之前等待按下按钮,我尝试创建一个 while 循环并让它循环直到单击按钮并将 bool 设置为 true 以结束 while 循环,这使得它崩溃了

while (!Redpress)
{
    // I'd like the wait here
}

Redpress = false;

while 是否存在并不重要,只要程序在将“Redpress”设置为 false 之前等待按钮按下...有什么想法吗?

最佳答案

使用事件 - 这是它们的设计目的。

您不需要在调用您的代码的 Button_Click 事件处理程序中为此使用 boolean 变量:

private void Button_Click(object sender, EventArgs e)
{
    // The code you need to execute when the button is pressed
}

正如@trickdev 指出的那样,您需要订阅此事件,但如果您使用 Visual Studio 中的“事件”窗口,它将为您添加必要的代码 - 包括空处理程序。

对于事件驱动程序,您总是在等待下一个“事件”发生。所以在你的情况下(如果我已经正确理解你的应用程序)当你启动程序时它应该简单地告诉第一个按钮闪烁“N”次。如果您将其写为事件,那么应用程序将在代码完成后返回等待状态。

然后在按钮单击事件处理程序中 - 您可以将所有按钮订阅到同一事件 - 您可以检查是否按下了正确的按钮,然后让下一个按钮闪烁。如果按下了错误的按钮,则显示一条合适的消息。

所以在伪代码中你有:

public class Form
{
    Initialise()
    {
        this.Loaded += FormLoaded;
    }

    private void FormLoaded(object sender, EventArgs e)
    {
        // pick a button
        pickedButton.Flash();
    }

    private void Button_Click(object sender, EventArgs e)
    {
        if (sender == pickedButton)
        {
            pickedButton = pickButton();
        }
        else
        {
            message = "Sorry wrong button, try again";
        }

        pickedButton.Flash();
    }
}

public class Button
{
    public void Flash()
    {
        // loop N times turning button on/off
    }
}

关于C# 让程序等待按钮被按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5628274/

相关文章:

c# - 如何让MVVM(WPF)中的输入控件相互通信?

c# - 从 C# NUnit 在多个浏览器中依次运行 Selenium 测试

c# - 为什么无法获取已启动进程的主窗口句柄?

excel - 做直到什么都没找到

asp.net - 在 asp.net 中的按钮内创建超链接

javascript - 如果启用了 Javascript,则将提交按钮替换为 onclick 事件

html - 按钮文字消失了

c# - 跨多个项目的 .NET App.Config 问题

css - 响应 - 在桌面上每三个 DIV 后清除一次,但在移动设备上每秒清除一次

java - 无法定义循环算法