按钮需要两次单独的单击才能完成操作

本文关键字:单击 操作 单独 两次 按钮 | 更新日期: 2023-09-27 17:55:29

我正在尝试制作一个按钮,该按钮将在单击时设置另一个按钮的文本。但是当我这样做时,它需要第二次单击才能执行第二个操作,即设置按钮文本。

    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;
        }
    }

我不确定这是怎么发生的。

按钮需要两次单独的单击才能完成操作

您正在使用变量 a 代理按钮的当前状态,这通常不是一个好主意。相反,您应该只检查按钮的状态(或它修改的任何属性)。看看这个实现,注意我删除了 Shuffle 的东西,因为它是常数:

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

您的第一个操作(if条件)在a==1时为真。您的第二个操作(else if)在a==2时为真。

您在第一个操作(if条件)中设置了a = 2值。

因此,当您第一次单击按钮时,它将 a 的值设置为 2,并且仅执行第一个操作(if 条件)。当您再次单击同一按钮时,它现在执行第二个操作(否则如果),因为第一次单击现在将 a 的值设置为 2。