2014-05-16 76 views
0

我是一名在窗體應用程序上工作的學生。在這個應用程序中,我有一個表單,就像顯示標籤的彈出窗口一樣。我想根據標籤的大小來改變窗口的大小。例如,如果標籤有3行,它應該自動顯示所有行。但現在它只顯示一行。我該如何解決這個問題?c#自動更改窗口大小

+0

[請看看這裏](http://stackoverflow.com/questions/5962595/how-do-you-resize-a-form-to-fit-its-content-automatically)和[Here]( http://stackoverflow.com/questions/4672978/how-to-autosize-the-height-of-a-label-but-not-the-width)。 –

+0

這應該是有用的: [鏈接](http://stackoverflow.com/questions/13185557/my-windows-forms-application-size-is-changing-different-notebooks) –

+3

您可以使用標準屬性可在設計師處獲得。將窗體的AutoSize屬性設置爲True,將AutoSizeMode設置爲GrowAndShrink。要從標籤中獲取多個「行」,必須將其MaximumSize屬性設置爲(100,0),以便強制包裝文本。 –

回答

2

您需要使用彈出窗體中標籤的字體設置來計算文本的大小。這裏的彈出窗體的Load事件的例子:

private void Popup_Load(object sender, EventArgs e) 
    { 
     messageLabel.Text = TextToShow; 

     Graphics gfx = this.CreateGraphics(); 
     SizeF textSize = gfx.MeasureString(messageLabel.Text, messageLabel.Font); 

     Size borders = this.Size - this.ClientSize; 

     this.Size = new Size((int)textSize.Width, (int)textSize.Height) + borders;    
    } 

此代碼假定你有一個叫TextToShow傳遞消息屬性,以顯示窗體:

 public string TextToShow { get; set; } 

可以打開彈出窗體如下:

 Popup popup = new Popup(); 
     popup.TextToShow = "Test\nMult-line popup window\n\nLine4\n\nLine 6"; 

     popup.ShowDialog(this); 

彈出窗體將縮放到標籤的大小。嘗試調整字體,更改文本等 - 應該正常工作。

希望這會有所幫助!

+0

Hans Passant的解決方案比我的更好...... – CoolBots

+0

呃,你可能會有用......我確定它可以:p – Kilazur