2013-04-02 36 views
0

我有一個winforms RichTextBox和TextBox(嘗試兩個)。當我鍵入文本時,我希望該框垂直放大(或垂直較小),以便所有文本均可查看。vb.net textbox/richtextbox GetPreferredSize不起作用

我使用下面的代碼在RichTextBox的TextChanged事件:

RTB.Height = RTB.GetPreferredSize(New Size(RTB.Width, 0)).Height 

這個代碼在大多數情況下,除了一個 - 當你把一個字(無空格),這是大於寬度的盒子。有任何想法嗎?

謝謝。

回答

1

Stackoverflow找到以下答案!只是不得不尋找更好的...

Private Sub rtb_ContentsResized(ByVal sender As Object, ByVal e As System.Windows.Forms.ContentsResizedEventArgs) Handles txtQuestion.ContentsResized 
    Dim h = e.NewRectangle.Height, w = e.NewRectangle.Width 
    h = Math.Max(h, sender.Font.Height) 
    h = Math.Min(h, Me.ClientSize.Height - 10 - sender.Top) 
    h += sender.Height - sender.ClientSize.Height + 1 
    sender.Height = h 
End Sub 

Measure String inside RichTextBox Control

0

嘗試試驗RTB最小和最大尺寸屬性。

聽起來像設置最大寬度可能會解決您的問題。

+0

Unfortuinately'RTB.MaximumSize =新的大小(RTB.Width,0)'設置高度之前沒有幫助:( – Ian

+0

設置最大寬度將限制RTB寬度,這樣長字會導致RTB高度增長而不是變寬。在設計時設置max/min(也許是WordWrap)屬性,或者在調整大小事件後的窗體中設置max/min尺寸增加。 – rheitzman