2015-06-10 45 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

相关问题