在窗口窗体中调整文本框内的文本 VB.net



在我的一个应用程序中,我需要将文本放置在文本框中,文本框的宽度和高度必须根据文本的长度而变化。所以我正在使用

TextSize = gr.MeasureString(textcontent, TextFont)

其中 textContent 是文本的内容,TextFont 是字体类型。(请参阅此链接)

但是,如果文本

包含大量字符,则说表单中需要大约 2 行(如果文本不适合单行),那么我还需要设置高度。因此,我希望文本适合任何给定文本的文本框。此外,如果存在多行的情况(对于大文本),那么第一行的末尾和第二行之间不应该有多余的空间。那么如何做到这一点呢?

如果使用常规的 TextBox 控件,则会更难,因为属性是有限的。所以我冒昧地建议改用 RichTextBox 控件,因为它仍然是一个文本框,但具有更多功能......因此,请尝试将富文本框控件放在窗体上并添加此代码...

Private Sub RichTextBox1_ContentsResized(sender As Object, e As System.Windows.Forms.ContentsResizedEventArgs) Handles RichTextBox1.ContentsResized
    RichTextBox1.Height = e.NewRectangle.Height + 12
End Sub

做这样的事情...

  1. 根据表单大小或根据需要确定文本框的最大宽度(Mx)。
  2. 像你正在做的那样计算字符串所需的长度L。 TextSize = gr.MeasureString(textcontent, TextFont)
  3. 如果 L 小于或等于 Mx,则将文本框的宽度更改为 L。
  4. 如果 L 大于 Mx
  5. ,则高度系数 (Hf) = L/Mx。设置 txtBox1.Multiline = true,并将 txtBox1 高度更改为 txtBox1.Height * Hf 并设置 txtBox1 宽度 = Mx

最新更新