VerticalSrollBar 在 vb.net 中增加了两次值

VerticalSrollBar is incrementing value twice in vb.net

Public Class Form1
    Dim val As Integer = 0
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        VScrollBar1.Minimum = 0
        VScrollBar1.Maximum = 100
        VScrollBar1.Value = 0
    End Sub
    Private Sub VScrollBar1_Scroll(sender As Object, e As ScrollEventArgs) Handles VScrollBar1.Scroll
        If val < 101 Then
            val = val + 10
            TextBox1.Text = val
            VScrollBar1.Value = val
            TextBox1.Font = New Font("Microsoft Sans Serif,", VScrollBar1.Value)
        Else
        End If
    End Sub
End Class

此代码还有一个问题,无论向上或向下滚动,值都在递增。 我试图通过在文本框中放置 Vscroll 值来调试它。能否请你帮我解决这个问题。

你只是告诉它用 val = val + 10 递增 valScrollEventArgs 可用于判断滚动条是向上滚动还是向下滚动。

Private Sub VScrollBar1_Scroll(sender As Object, e As ScrollEventArgs) Handles VScrollBar1.Scroll
    If e.Type = ScrollEventType.LargeIncrement OrElse e.Type = ScrollEventType.SmallIncrement Then
        val = val + 10
    Else
        'Decrement val or do nothing here. I've assumed that you are wanting to decrement val

        val = val - 10
    End If

    TextBox1.Text = val
    TextBox1.Font = New Font("Microsoft Sans Serif,", VScrollBar1.Value)
End Sub
  1. 您正在更改 Scroll 事件中的 VScroll 值,这毫无意义!您应该在此事件中读取滚动值或撤消新值。检查 e.OldValue 和 e.NewValue 属性。

  2. 确保为 VScroll 的 Minimum 属性 分配一个有效值,该值符合字体的最小大小,这不是等于 0。至少为 1。

尝试猜测您要做什么,我建议如下:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    VScrollBar1.Minimum = 1
    VScrollBar1.Maximum = 109
    VScrollBar1.Value = Font.Size
End Sub

jimi

的改进版本
Private Sub VScrollBar1_Scroll(sender As Object, e As ScrollEventArgs) Handles VScrollBar1.Scroll
   Dim fs As FontStyle = Font.Style

   TextBox1.Font.Dispose()

   TextBox1.Font = New Font("Microsoft Sans Serif", e.NewValue, fs, GraphicsUnit.Point)
End Sub

祝你好运。

这段代码是正确的,我达到了我想达到的目的。现在,这段代码正在平滑地增大和减小 TextBox 字体大小。

Public Class Form1
    Private Sub VS_Scroll(sender As Object, e As ScrollEventArgs) Handles VS.Scroll
        txtbx.Font = New Font("Microsoft Sans Serif", VS.Value)
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        VS.SmallChange = 5
        VS.LargeChange = 20
        VS.Minimum = 10
        VS.Maximum = 100
    End Sub
End Class