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

时间:2015-12-01 20:31:15

标签: c# winforms

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

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

1 个答案:

答案 0 :(得分:1)

如果没有a good, minimal, complete code example清楚地显示您尝试过的内容,以及对代码执行操作的精确解释以及(特别是)您希望代码执行的操作,则无法确切知道最佳内容答案就是你。

但根据您发布的代码,我希望以下内容可以正常工作:

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(),反之亦然。