2010-10-21 53 views
5

現在我澄清這可能是一個重複的問題:Right-aligned labels in WinForms 但非答案滿足我。WinForms:右對齊標籤自動大小

的問題很簡單:

我有對齊的標籤自動調整大小的權利設置好的爲true。預期的行爲是當文本增加時,右邊的座標保持不變。但事實並非如此。左邊的座標是保持不變的那個座標。

我的應用程序有點小,所以我不想開始將控件放到面板中,所以我嘗試了所有涉及到標籤屬性的解決方案。唯一有效的方法是將autosize設置爲false並將其大小設置爲false。 (可接受的問題解決方案N°1692383)。但它真的很醜!我真的想避免這種情況。

任何其他posible解決方案?

在此先感謝!

+0

請看我編輯的答案。調整窗體大小時,原始版本無法正常工作。 – 2010-10-21 16:02:13

+0

Tahnks @adrift !!!我沒有意識到第一個沒有工作。 – Diego 2010-10-21 16:18:23

回答

7

一個解決辦法是捕捉到標籤的右邊緣的形式構造,並且在標籤SizeChanged事件的基礎上,初步右邊距重置位置,標籤的當前Width和標籤家長電流Width

這也假定標籤被固定在處理表單大小的權利上。

private readonly int _rightMargin; 

public Form1() 
{ 
    InitializeComponent(); 

    _rightMargin = label1.Parent.Width - label1.Right; 
} 

private void label1_SizeChanged(object sender, EventArgs e) 
{ 
    label1.Location = new Point(label1.Parent.Width - _rightMargin - label1.Width, label1.Top); 
}