2017-05-25 158 views
-1

我在C#Windows窗體中有此代碼。此代碼使標籤文本從右向左移動。但是,當文本在前看不見,它不會再從右到左來了.. 請人幫忙c#從右到左移動標籤

label21.Location = new Point(label21.Location.X - 15, label21.Location.Y); 

if (label21.Location.X > this.Width) 
{ 
    label21.Location = new Point(0 - label21.Width, label21.Location.Y); 
} 
+3

'label1.Width'是用來代替'label21.Width' –

+0

@AlfieGoodacre是正確的,你是通過其他標籤的寬度重置標籤的位置。使用' - label21.Width'就足夠了。 – dcg

+0

什麼文字在消失之前最初顯示? – i486

回答

2

這樣做:

label21.Location.X - 15 

您的標籤移到左側。

X > this.Width檢查X是否超過右側(向左移動時不可能)。

你的檢查應該是:

if (label21.Location.X + label21.Width < 0) 
{ 
    label21.Location = new Point(this.Width, label21.Location.Y); 
} 
+0

我試過你的代碼。標籤文本移動但不消失。就在它撞擊左側時,它會從右側開始。 –

+0

@SinanLaBlaugranaHendi,你想讓標籤在左側消失,然後出現在右側? –

+0

Yesss please :) –

1

有代碼一個錯字,label1應該label21

正確它如下:

label21.Location = new Point(label21.Location.X - 15, label21.Location.Y); 

if (label21.Location.X > this.Width) 
{ 
    label21.Location = new Point(0 - label21.Width, label21.Location.Y); 
} 
+1

我只是在這裏輸入了錯誤..我在我的原始代碼中有正確的label21。仍然是同樣的問題 –

1

this.Width是 「最右邊的點」 的含控制的。 由於您向左移動,因此標籤的位置X將朝向0而不是朝向此。寬度。

+0

你能解釋更多 - 我可以做些什麼嗎? –

0

如果標籤進入到完全離開,然後消失,來自從一開始這可能做的工作 。

 Point a = new Point(this.Width, label4.Location.Y); 
     Point b = new Point(label4.Location.X-10, label4.Location.Y); 
     if (label4.Location.X < 0-label4.Width+1) 
     { 
      label4.Location = a; 
     } 
     else 
     { 
      label4.Location = b; 
     }