使用事件 - 這是他們設計的。
你並不需要使用布爾變量爲此在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