2

我一直在环顾四周,但到目前为止,我还没有看到我在寻找什么。我有一个文本框,它的设计看起来像 VB.Net 程序中的标签,因为标签不能像文本框一样具有所有相同的功能。我希望每个轴上的滚动条仅在实际需要时才显示。字体对不同的字符使用不同的宽度,这不是我能改变的。

这样的滚动条怎么能放在那里?就 VB.Net GUI 设计而言,我有点绿色,所以涉及 30 行代码来做这件事的答案可能会有点难以理解和应用。如果可能的话,我真的需要一些不太复杂的东西。谢谢!

4

1 回答 1

4

更新

FunctionLink我已经在这里发布的内容给你写了一个。这应该为你做。(请确保对于此测试您Textbox不是)Textbox6Textbox1

Private Sub TextBox6_TextChanged(sender As Object, e As EventArgs) Handles TextBox6.TextChanged
    If CheckLength(TextBox6.Text) = True Then
        TextBox6.ScrollBars = ScrollBars.Vertical
    Else
        TextBox6.ScrollBars = ScrollBars.None
    End If
End Sub

Private Function CheckLength(ByVal longStr As String)
    Dim TrueOrFalse As Boolean = False

    Dim f As Font = Me.TextBox6.Font
    Dim rect As Rectangle = TextBox6.ClientRectangle
    Dim charFitted As Integer
    Dim linesFitted As Integer
    Using g As Graphics = TextBox6.CreateGraphics()
        Dim sf As New StringFormat(StringFormatFlags.NoWrap)
        sf.LineAlignment = StringAlignment.Center
        sf.Alignment = StringAlignment.Near
        sf.Trimming = StringTrimming.EllipsisCharacter
        sf.FormatFlags = StringFormatFlags.DirectionVertical
        g.MeasureString(longStr, f, rect.Size, sf, charFitted, linesFitted)
    End Using

    If charFitted < longStr.Length Then
        TrueOrFalse = True
    End If

    Return TrueOrFalse
End Function

这将检查整个复选框的长度(多行与否),如果CheckLength已超过。boolean Functionreturns TrueTextbox's Length

警戒

于 2013-09-04T20:39:54.810 回答