2

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

TextSize = gr.MeasureString(textcontent, TextFont)

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

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

4

2 回答 2

2

It's going to be harder if you use a regular TextBox control since the properties are limited. So I've taken the liberty to suggest to use the RichTextBox control instead since it's still a TextBox but with more features... So try to put a RichTextBox control onto your form and add this code...

Private Sub RichTextBox1_ContentsResized(sender As Object, e As System.Windows.Forms.ContentsResizedEventArgs) Handles RichTextBox1.ContentsResized
    RichTextBox1.Height = e.NewRectangle.Height + 12
End Sub
于 2014-02-19T07:34:25.753 回答
1

做这样的事情...

  1. 根据表单大小或您希望确定文本框的最大宽度 (Mx)。
  2. 计算你正在做的字符串所需的长度 L..TextSize = gr.MeasureString(textcontent, TextFont)
  3. 如果 L 小于或等于 Mx,则将文本框的宽度更改为 L。
  4. 如果 L 大于 Mx,则高度因子 (Hf) = L/Mx。设置 txtBox1.Multiline = true 并将 txtBox1 高度更改为 txtBox1.Height * Hf 并设置 txtBox1 宽度 = Mx
于 2014-02-19T09:13:02.293 回答