2011-06-23 76 views
0

C#WinForms:想象一下,紅色和黃色面板內有一堆控件。其實他們不需要成爲小組。無論你的建議是好的。 功能要求:當它是英語語言調整大小是好的,因爲該表單看起來像我在設計師設計的。當語言改變時出現這個問題,因爲標籤在翻譯模式下獲得了非常長的文本,並且它不符合黃色。因此:(1)我需要一些UI設計理念,當標籤需要更多空間時,它會自動調整大小,並調整黃色區域並將紅色區域推向右側,同時表單將調整大小以顯示所有內容。 2)我想紅色區域增長,如果我調整窗體的大小,所以我可以通過將紅色區域錨定到右側,罰款......但我不希望黃色區域調整大小,如果我調整窗體的大小。我只想在它裏面的內容需要更多空間時調整大小。 3)我可能是錯誤的是我用了兩列的TableLayout紅色和黃色區域,並將列放在AutoSize模式,但它並沒有解決問題....當語言發生變化時調整窗體大小

你有什麼建議?

enter image description here

+0

改爲使用WPF。 ;-)它可以爲你處理這個問題。 –

+0

WPF不是我的選擇。我必須使用Win32 Forms。 – Bohn

+0

TableLayoutPanel應該工作。也許你錯了。 –

回答

1

要做到這一點,最好的辦法是使繼承System.Forms.Controls.Button或標籤類的類。重寫TextChanged事件,然後在Paint函數中,使用MeasureFont來度量文本的大小並按照順序改變按鈕的大小。所以像這樣:

public class MyButton : Button 
{ 
    protected override void OnPaint(PaintEventArgs pe) 
    { 
     Graphics g = pe.Graphics; 

     SizeF stringSize = g.MeasureFont(this.Text, this.Font); 

     this.Resize(SizeF.Width + 10, SizeF.Height + 10); 
    } 
} 

沿着這些線的東西。我沒有測試過這個。

相關問題