从左到右和从右到左移动标签
Posted
技术标签:
【中文标题】从左到右和从右到左移动标签【英文标题】:Move the label from left to right and right to left 【发布时间】:2022-01-18 00:37:23 【问题描述】:我的问题很简单。 我的 Label1 应该从左到右连续移动。 (从表格的左侧开始,到表格的右侧。当它到达表格的右侧时,转到左侧,依此类推。)我有 2 个计时器(一个用于右侧,一个用于左侧) 我有以下代码,它从左侧开始并向右移动,但是当它到达表单的右侧时,它不会返回。 谁能帮帮我?
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();
谢谢。
【问题讨论】:
除其他外,您永远不会更新 _objPosition 绘画事件仅用于绘画。不要在该方法中移动控件。 @LarsTech 我可以用什么代替? 更新 x 位置的刻度事件。 2 个计时器 - 一个就可以了 【参考方案1】:我认为你把事情复杂化了。让我们只有一个计时器,一个步数的像素,我们有时会翻转为负数,一段时间后又会翻转回正数。我们可以通过重复设置它的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;
你可能想微调它,但基本的动作就在那里
【讨论】:
非常感谢:事实上,在我看来,这比实际上更难。谢谢。以上是关于从左到右和从右到左移动标签的主要内容,如果未能解决你的问题,请参考以下文章