【问题标题】:vb.net Autosize Multiline Textbox height with wordwrapvb.net 使用自动换行自动调整多行文本框高度
【发布时间】:2016-01-02 12:36:12
【问题描述】:

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

也更希望能够使用富文本框,但我会满足于常规文本框。

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

提前致谢!!

【问题讨论】:

  • 我知道如何增加文本框的大小。我需要知道如何检索文本框中文本的高度,否则我不知道要让它有多大。

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


【解决方案1】:

我用过

txtBox.Height = txtBox.Font.Height * (txtBox.Lines.Count + 1)

【讨论】:

    【解决方案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
    

    【讨论】:

      【解决方案3】:

      如果您想使用富文本框,请尝试将其添加到表单的类中 - 记住将所有显示“RichTextBox1”的位重命名为您的富文本框名称

      Private Sub richTextBox1_ContentsResized(sender As Object, e As contentsResizedEventArgs) Handles RichTextBox1.ContentsResized
          RichTextBox1.Height = e.NewRectangle.Height + 12
      End Sub
      

      唯一的缺点是,无论您最初为富文本框选择的大小,它都会被忽略,因为当表单加载时会触发上述事件

      【讨论】:

      • 谢谢大卫,我不关心加载时的大小,我打算在加载时设置它。我有一个常规的文本框来调整我想要的大小。我将使用富文本框实现您的解决方案。
      猜你喜欢
      • 2013-03-08
      • 2012-05-21
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      相关资源
      最近更新 更多