2012-02-15 26 views
0

你好ATM我眼前這個代碼如何使文本框文本來回移動?

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     if (checkBox1.Checked == true) 
     { 
      x = 0; 
      timer1.Enabled = true; 
      timer1.Start(); 
     } 
     else 
     { 
      timer1.Enabled = false; 
     } 
    } 
    private int x = 0; 
    private int y = 0; 
    private void timer1_Tick(object sender, EventArgs e) 
    { 
     if (x <= 10) 
     { 
      x++; 
      string ping = new string(' ', x) + "hello"; 
      label1.Text = ping; 
      if (x == 10) 
      { 
       y = 10; 
      } 
     } 
     else if (y > 0) 
     { 
      y--; 
      string pong = new string(' ', y) + "hello"; 
      label1.Text = pong; 
      if (y == 0) 
      { 
       x = 0; 
      } 
     } 
    } 

標籤上有15個字符的最大長度,我希望它保持下去。

但我希望它,而不是使用「你好」,把我輸入到文本框中的文本,並做到這一點。

然而,它必須採取15和減去文本框的文本的長度,以保持標籤的最大長度15完好無損,同時在文本框中顯示整個單詞,但我無法弄清楚如何做到這一點,我試過了很多東西,但我不明白任何幫助將不勝感激。 :D

+0

您可以將來自[此處](http://www.java2s.com/Code/CSharp/GUI-Windows-Form/MarqueeLabelHost.htm)的代碼綁定到您的計時器,以便在每個計時器上遞增其位置。 – 2012-02-15 01:45:23

+0

不完全確定你以後的事情。你似乎正在做的是通過用空格填充來將詞語hello移到右邊然後到左邊。您可以通過更改Left(x)和Top(y)屬性來移動標籤控件。文本框控件也可以做到這一點。我假設你只是在這裏試驗動畫而不是設計用戶界面。對於用戶必須用鼠標敲擊移動文本框可能有點太「有趣」。 – Swanny 2012-02-15 01:53:03

+0

基本上我試圖用文本框的文本替換你好,但標籤的最大長度是15,所以我不知道如何納入該 我會做15 - textbox1.text.length對嗎?但它不會讓我做一個私人int爲 – 2012-02-15 02:13:08

回答

0

您對「ping」和「pong」這兩個詞的使用,加上標題中的「來回移動」讓我相信您想要的結果可以通過更改每個標籤的TextAlign屬性來實現蜱。

如果這是你想要的結果,你將不必添加空格。該文本將顯示爲從標籤中的左邊緣到右邊緣。您可以考慮使用TRIM()修剪文本屬性,以確保任何一邊都不存在任何空格,使其看起來不正確對齊。

+0

我該怎麼做? 我不是很熟悉很多東西在c# – 2012-02-15 03:21:14

+0

它也正確對齊 我只是想能夠使用文本框來代替「你好」 – 2012-02-15 03:22:18

+0

,但也保持標籤的最大字符長度爲15 – 2012-02-15 03:22:40