【问题标题】:vb.net textbox / richtextbox GetPreferredSize not workingvb.net 文本框/richtextbox GetPreferredSize 不起作用
【发布时间】:2013-04-02 15:28:06
【问题描述】:

我有一个 winforms RichTextBox 和 TextBox(两者都试了)。当我输入文本时,我希望框在垂直方向变大(或在垂直方向变小),以便所有文本都可见。

我在 RichTextBox TextChanged 事件中使用以下代码:

RTB.Height = RTB.GetPreferredSize(New Size(RTB.Width, 0)).Height

此代码在大多数情况下都有效,除了一种情况 - 当您输入一个大于框宽度的单词(不带空格)时。有什么想法吗?

谢谢。

【问题讨论】:

    标签: vb.net winforms richtextbox


    【解决方案1】:

    已经在 Stackoverflow 上找到了以下答案!只需要更好地搜索...

    Private Sub rtb_ContentsResized(ByVal sender As Object, ByVal e As System.Windows.Forms.ContentsResizedEventArgs) Handles txtQuestion.ContentsResized
        Dim h = e.NewRectangle.Height, w = e.NewRectangle.Width
        h = Math.Max(h, sender.Font.Height)
        h = Math.Min(h, Me.ClientSize.Height - 10 - sender.Top)
        h += sender.Height - sender.ClientSize.Height + 1
        sender.Height = h
    End Sub
    

    来自

    Measure String inside RichTextBox Control

    【讨论】:

      【解决方案2】:

      尝试使用 RTB 最小和最大尺寸属性。

      听起来像设置最大宽度可能会解决您的问题。

      【讨论】:

      • 不幸的是RTB.MaximumSize = New Size(RTB.Width, 0)在设置高度之前没有帮助:(
      • 设置最大宽度将限制 RTB 宽度,这样长字将导致 RTB 高度增加,而不是变得更宽。在设计时设置最大/最小(可能还有 WordWrap)属性,或者在表单的调整大小后事件中设置以控制大小增加。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      相关资源
      最近更新 更多