使用事件 - 这是他们设计的。
你并不需要使用布尔变量为此在Button_Click
事件处理程序调用代码:
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
}
}
按钮事件已经存在,我需要程序来等待事件。 – Zizo47 2011-04-11 22:48:12
您不能在用户界面线程中编写这样的代码。它会冻结用户界面。理解UI编程的事件驱动本质对于取得成功至关重要。 – 2011-04-11 23:38:29