vb.net使用wordwrap自动调整多行文本框高度

时间:2015-10-05 18:42:50

标签: vb.net winforms visual-studio-2013

我正在尝试在visual studio 2013的Windows窗体应用程序中创建一个固定宽度的文本框,它将作为一行高度开始,并随着用户键入和文本换行(wordwrap)或用户推送时扩展输入以创建新行。理想情况下,我想设置一个最大高度,此时将添加一个垂直滚动条。此外,当用户也删除内容时,文本框也应缩小。

也更喜欢能够使用富文本框,但我会选择常规文本框。

请告诉我,它不需要一些疯狂的解决方法来做相对容易的事情。

提前致谢!!

3 个答案:

答案 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)