2015-06-10 90 views
-1

我正在嘗試製作一個按鈕,用於點擊時設置另一個按鈕的文本。但是當我這樣做時,需要第二次點擊才能完成第二個操作,即設置按鈕文本。按鈕需要兩個單獨的點擊才能完成操作

private void button2_Click(object sender, EventArgs e) 
    { 
     // Button has been clicked. 
     if(a == 1){ 
      // The button has been clicked only once 
      button2.Text = "Repeat: Off"; 
      button6.Text = "Shuffle: Off"; 
      loop = false; 
      shuffle = false; 
      a = 2; 
     } else if(a == 2) { 
      // The button has been clicked only twice :c 
      button2.Text = "Repeat: On"; 
      button6.Text = "Shuffle: Off"; 
      loop = true; 
      shuffle = false; 
      a = 1; 
     } 
    } 

我不知道這是怎麼發生的。

+0

你設置一個斷點,並通過你的方法步驟,一邊看你的變量值怎麼改? –

+0

可能重複http://stackoverflow.com/questions/13486245/winforms-how-to-call-a-double-click-event-on-a-button –

+0

你是否初始化A!= 0? – TaW

回答

0

您正在使用變量a代理按鈕的當前狀態通常不是一個好主意。你應該檢查你的按鈕的狀態(或者它修改的任何屬性)。看看這個實現,並指出,我刪除了隨機的東西,因爲它是不變的:

private void button2_Click(object sender, EventArgs e) 
{ 
    loop = !loop; 
    if (loop) 
    { 
     button2.Text = "Repeat: On"; 
    } 
    else 
    { 
     button2.Text = "Repeat: Off"; 
    } 
} 
0

您的第一個動作(if條件)爲a==1時爲true。 你的第二個動作(else if)是a==2

您在第一個操作(if條件)中設置的值爲a = 2

因此,當您第一次點擊按鈕時,它將a的值設置爲2,並且只執行第一個動作(如果條件)。當你再次點擊相同的按鈕時,它現在執行第二個動作(否則如果),現在第一個點擊現在將a的值設置爲2.

+0

我們不知道a的初始值。大概0? – TaW

+0

@TaW,它不能爲0,否則它永遠不會做任何事情。 (其他 - 如果,而不是別的)... –

+0

嗯,這是正確的:-) - otoh,問題往往是標誌的初始狀態和其他事物(文本)的狀態不適合.. – TaW

相關問題