从左到右和从右到左移动标签

Move the label from left to right and right to left

我的问题很简单。 我的 Label1 应该从左到右连续移动。 (从表格的左侧开始,然后转到表格的右侧。当它到达表格的右侧时,转到左侧,依此类推。)我有 2 个计时器(一个用于右侧,一个用于左侧) 我有下面的代码,它从左边开始到右边,但是当它到达窗体的右边时,它没有return。 谁能帮帮我?

 enum Position
    {
        Left,Right
    }
    System.Windows.Forms.Timer timerfirst = new System.Windows.Forms.Timer();

    private int _x;
    private int _y;
    private Position _objPosition;
  public Form1()
    {
        InitializeComponent();            
        if (label1.Location == new Point(0,180))
        {
            _objPosition = Position.Right;
        }
        if (label1.Location == new Point(690,0))
        {
            _objPosition = Position.Left;
        }                         
    }
private void Form1_Paint(object sender, PaintEventArgs e)
    {
        Label1.SetBounds(_x, _y, 0, 180);
    }

private void tmrMoving_Tick(object sender, EventArgs e)
    {
        tmrMoving.Start();

        if (_objPosition == Position.Right && _x < 710)
        {   
          _x +=10;          
        }
       
        if(_x == 710)
        {
            tmrMoving.Stop();
        }
    Invalidate();
    }

private void tmrMoving2_Tick(object sender, EventArgs e)
    {
        tmrMoving2.Start();
        if (_objPosition == Position.Right && _x > 690)
        {
            _x -= 10;
        }
        if(_x == 1)
        {
            tmrMoving2.Stop();
        }
        Invalidate();
    }

谢谢。

我认为你把事情复杂化了。让我们只有一个计时器,我们有时翻转负值的像素步数,一段时间后翻转回正值。我们可以通过重复设置其 Left:

来移动标签
public partial class Form1 : Form
{
    private int _step = 10;

    public Form1()
    {
        InitializeComponent();

    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (label1.Right > this.Width) _step = -10;
        if (label1.Left < 0) _step = 10;
        label1.Left += _step;
    }
}

您可能想要对其进行微调,但基本动作已经有了