【问题标题】:Fit the text inside a TextBox in VB.net windows forms在 VB.net windows 窗体中将文本放入 TextBox 中
【发布时间】:2014-02-19 07:19:52
【问题描述】:

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

TextSize = gr.MeasureString(textcontent, TextFont)

其中 textcontent 是文本内容,TextFont 是字体类型。(参考this link

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

【问题讨论】:

    标签: vb.net winforms textbox measurestring


    【解决方案1】:

    如果你使用常规的 TextBox 控件会更难,因为属性是有限的。所以我冒昧地建议使用 RichTextBox 控件,因为它仍然是一个 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
    

    【讨论】:

      【解决方案2】:

      做这样的事情......

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多