2013-06-19 80 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

检查“锁定”属性=上的文本框控件假设计师?