我的問題很簡單。我的 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();
}
謝謝。
uj5u.com熱心網友回復:
我認為你把事情復雜化了。讓我們只有一個計時器,我們有時翻轉負數的步數像素,一段時間后翻轉回正數。我們可以通過重復設定其 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;
}
}
你可能想微調它,但基本的動作就在那里
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/382073.html
上一篇:將圖片從上到下移動
