2014-11-25 72 views
1

我有一個Windows窗體應用程序,其中包含一對面板中的一對標籤,一個按鈕和一個組合框。調整Windows窗體應用程序中的標籤大小

this.pnlSuboptions.Controls.Add(this.label1); 
this.pnlSuboptions.Controls.Add(this.cboPtSize); 
this.pnlSuboptions.Controls.Add(this.label2); 
this.pnlSuboptions.Controls.Add(this.btnSelect); 

我在嘗試爲我的標籤加載本地化字符串時遇到了我的標籤問題。某些語言的本地化字符串比英文字符串大。在這種情況下,標籤的一部分會隱藏在組合框或按鈕下。

我希望標籤的大小向左而不是右移。我已經將標籤的AutoSize屬性設置爲true,並且也使用了Anchor屬性,但似乎沒有任何效果。

我發現了一個SO link其中包含了解決當標籤文字的變化,但我敢肯定,我怎麼能在我的情況下將此這個問題,其中標籤的形式加載過程中讀出一次。

有什麼建議嗎?

+0

autoSize設置爲True是錯誤的事情,在這裏做。設置其MaximumSize屬性,併爲兩行文本留出足夠空間或設置AutoEllipsis = True。 – 2014-11-25 11:17:45

回答

3

你可以把它們放入一個TableLayoutPanel有2列和兩行。每個標籤都在每行的左側,並且兩個組合框/按鈕都進入其他單元格(每行的右側)。

然後,您必須停靠兩個元素(Dock Fill)並將列設置爲AutoSize。 (你可以在圖片中看到)

AutoSize Columns

您可能還需要到TablePanelLayout停靠到您共同面板。

正如您在下圖中看到的,兩個TablePanelLayout都具有相同的組件。但在第二部分中,我改變了label3的文字。

enter image description here

希望它能幫助。 (也爲我的英語不好對不起,這不是我的母語,請隨時糾正任何錯誤的拼寫,謝謝!)

+0

雖然我想把所有的控件都放在同一行,但是你的建議非常適合。使用TableLayoutPanel,我的標籤現在可以正確顯示在窗體上,而不會與其他控件重疊。 – 2014-11-25 12:48:12

1

從我的第一個建議是:

  1. 設置autoSize屬性False
  2. 確保寬度比通過調整標籤大小所需的寬度大得多。
  3. 無論接收到什麼內容,該標籤現在都應該很好地適合。

第二個建議,你可以使用GDI +來確定文本的大小,然後調整標籤據此見http://msdn.microsoft.com/en-us/library/6xe5hazb(v=vs.110).aspx

Graphics gfx = this.label1.CreateGraphics(); // I think its called that, cant remember :) 

Font stringFont = new Font("Arial", 16); 

// Measure string. 
SizeF stringSize = new SizeF(); 
stringSize = gfx.MeasureString(this.label1.Text, stringFont); 
this.label1.Size = new Size((int)stringSize.Width, (int)stringSize.Height); 

噢我差點忘了。確保你是面板不是裁剪的原因。我的意思是,檢查面板是否足夠大,以使標籤適合:-)

希望這有助於!

最好的問候, Zerratar