提供大家兩種跑馬燈的方法,簡單好玩。
方法一:Substring( X , Y )
使用這個方法的理論在於減少字串的長度,這個方法最好要配合PadLeft將左邊填滿,以免空間很大,字卻只跑在一邊短短的跑道上。
1.先將字串的左邊用空白字元填滿,再將長度存起來
string Contain = "";
Contain = textBox_CT.Text.PadLeft(100, ' ');
TextLength = Contain.Length;
2.在Timer事件中寫入跑馬燈的位移程式碼,這個範例中使用了Label、TextBox兩個元件
if (TextLength > 0)
{
label1.Text = Contain.Substring(i, TextLength);
textBox1.Text = Contain.Substring(i, TextLength);
TextLength = TextLength - 1;
i = i + 1;
}
else if (TextLength < 1)
{
label1.Text = Contain;
textBox1.Text = Contain;
TextLength = Contain.Length;
i = 0;
}
第一個方法就大功告成了!
方法二:讓整個元件移動
這個方法其實很不好,因為元件移動的MAX與MINI值很不好控制,要計算得很精準才會漂亮,通常向我一樣笨一點的人,算距離會算到頭爆炸。
1.計算好元件的寬度與父容器的寬度,調整到你最喜歡的姿勢位置與跑動距離,將條件寫在Timer中,讓他不斷的跑阿跑
PS:【label2.Left = label2.Left - 3;】減去的數字越大,跑的速度越快,減太多,會變成用跳的
if (label2.Left + label2.Width > 0)
{
label2.Left = label2.Left - 3;
}
else if (label2.Left < 1)
{
label2.Left = 390;
}
第二個方法也完成了!
以上的兩個方式都很簡單吧,其實還有第三個方法:直接指定元件的Location,不過我翻了一下MSDN,這個做法好像會使系統重繪元件(有誤請糾正),而且長期的不斷的更新元件位置,其實是一種浪費效能的做法,重複一開始說的:殺雞不用牛刀,但還是提供各位指定元件Location的方法:
物件名稱.Location = new Point(x, y);
指定Location的寫法就是這樣,看似簡單卻隱藏殺機(誤)。