2013-06-19 78 views
1

我試圖讓textbox動態更改其高度,同時保持固定的width。當text太長而且太過於第二行時,不是resizec#動態更改textboxwithfont高度

textbox在添加完所有文本後確定大小。

下面是我目前使用的。

txtwfSupportNotes[i].Multiline = true; 
txtwfSupportNotes[i].Text += ds.Tables[0].Rows[i]["Notes"].ToString() 
+ "\r\n\r\n"; 
Size txtSize = TextRenderer.MeasureText(txtwfSupportNotes[i] 
.Text, txtwfSupportNotes[i].Font); 
txtwfSupportNotes[i].Width = 355; 
txtwfSupportNotes[i].Height = txtSize.Height+5; 
txtwfSupportNotes[i].BorderStyle = BorderStyle.FixedSingle; 

編輯:有一個修復,見下文。

Size txtSize = TextRenderer.MeasureText(txtwfSupportNotes[i].Text, txtwfSupportNotes[i].Font, txtwfSupportNotes[i].ClientRectangle.Size, TextFormatFlags.WordBreak); 
txtwfSupportNotes[i].Height = txtSize.Height+5; 
+0

你是否在'TextChanged'事件中調用上述內容?對我來說看起來很好。 – James

+0

文本只設置一次,並且在任何大小設置完成之前設置,我將編輯原始文章以顯示示例。 – Joeeigel

+0

我認爲你正在更新作爲循環的一部分?如果它應該是固定的,你不應該每次都設置寬度。 – James

回答

0

我假定這是一個WPF或WinForms應用程序,如果是這樣的情況下,不設置高度,(但使用的包裝,),那麼你的文本框應該動態調整。

0

爲什麼不使用TextBox的FontChanged事件?像這樣做:

private void txtwfSupportNotes_FontChanged(object sender, EventArgs e) 
    { 
     Size txtSize = TextRenderer.MeasureText(txtwfSupportNotes.Text, txtwfSupportNotes.Font); 
     txtwfSupportNotes.Height = txtSize.Height + 5; 
    } 
0

如果使用minHeight屬性的,我想應該動態rezise您的文本框:

txtwfSupportNotes[i].MinHeight = txtSize.Height+5; 
0

檢查「鎖定」屬性=上的文本框控件假設計師?