如何停止按钮在所需位置移动(包括计时器)

本文关键字:移动 包括 计时器 位置 何停止 按钮 | 更新日期: 2023-09-27 18:25:12

我有一个表单。左侧有一个按钮,右侧有一个标签。我想点击按钮移动,直到它到达标签,然后停止并变为假的。目前,我的按钮只是从右向左移动,但它只会在点击时停止。我需要它在点击或到达最后一个点标签时停止。

    private void timer1_Tick(object sender, EventArgs e)
    {
        button1.Left++;  
    }
    private void button1_Click(object sender, EventArgs e)
    {
        timer1.Enabled = !timer1.Enabled;
        if (timer1.Enabled)
        {
            button1.Text = "Brauc!";
            timer1.Start();
        }
        else
        {
            button1.Text = "Sakt braukt!";
            timer1.Stop();
        }             
    }

如何停止按钮在所需位置移动(包括计时器)

如果没有一个好的最小完整代码示例,它清楚地显示了您所尝试的内容,以及对代码的作用和(尤其是)您希望代码做什么的精确解释,就不可能确定对您来说最好的答案是什么。

但根据你发布的代码,我希望以下内容能起作用:

private void timer1_Tick(object sender, EventArgs e)
{
    button1.Left++;
    int buttonMoveLimit = label1.Left - button1.Width;
    if (button1.Left >= buttonMoveLimit)
    {
        button1.Left = buttonMoveLimit;
        SetTimer(false);
    }
}
private void button1_Click(object sender, EventArgs e)
{
    SetTimer(!timer1.Enabled);
}
private void SetTimer(bool enabled)
{
    timer1.Enabled = enabled;
    button1.Text = timer1.Enabled ? "Brauc!" : "Sakt braukt!";
}

注意:您不需要同时设置Enabled和调用Start()Stop()。设置属性值相当于调用Start()Stop(),反之亦然。