我正在尝试在visual studio 2013的Windows窗体应用程序中创建一个固定宽度的文本框,它将作为一行高度开始,并随着用户键入和文本换行(wordwrap)或用户推送时扩展输入以创建新行。理想情况下,我想设置一个最大高度,此时将添加一个垂直滚动条。此外,当用户也删除内容时,文本框也应缩小。
也更喜欢能够使用富文本框,但我会选择常规文本框。
请告诉我,它不需要一些疯狂的解决方法来做相对容易的事情。
提前致谢!!
答案 0 :(得分:2)
这对我有用:
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) _
Handles TextBox1.TextChanged
TextBox1.Height =
TextRenderer.MeasureText(
TextBox1.Text,
TextBox1.Font,
New Size(TextBox1.ClientSize.Width, 1000),
TextFormatFlags.WordBreak
).Height
End Sub
答案 1 :(得分:0)
如果您想使用富文本框,请尝试将其添加到表单的类中 - 记住重命名所有位于" RichTextBox1"到您的richtextbox名称的名称
Private Sub richTextBox1_ContentsResized(sender As Object, e As contentsResizedEventArgs) Handles RichTextBox1.ContentsResized
RichTextBox1.Height = e.NewRectangle.Height + 12
End Sub
唯一的缺点是,无论您最初为richtextbox选择的大小,都会被忽略,因为当表单加载时会触发上述事件
答案 2 :(得分:0)
我用过
txtBox.Height = txtBox.Font.Height * (txtBox.Lines.Count + 1)