我正在尝试创建一个按钮,单击时将设置另一个按钮的文本。但是当我这样做时,它需要第二次单击才能执行第二个操作,即设置按钮文本。
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)
if
时,您的第一个操作(a==1
条件)为真。
else if
时,您的第二个操作(a==2
)为真。
您在第一个操作(a = 2
条件)中设置if
的值。
因此,当您第一次单击按钮时,它将a的值设置为2,并且仅执行第一个操作(如果条件)。当你再次点击同一个按钮时,它现在执行第二个动作(否则如果),因为第一个点击现在将a的值设置为2。
答案 1 :(得分:0)
您使用变量a
代理按钮的当前状态,这通常不是一个好主意。您应该只检查按钮的状态(或它修改的任何属性)。看看这个实现,注意我删除了Shuffle的东西,因为它是不变的:
private void button2_Click(object sender, EventArgs e)
{
loop = !loop;
if (loop)
{
button2.Text = "Repeat: On";
}
else
{
button2.Text = "Repeat: Off";
}
}