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
递增 val
。 ScrollEventArgs
可用于判断滚动条是向上滚动还是向下滚动。
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
您正在更改 Scroll 事件中的 VScroll 值,这毫无意义!您应该在此事件中读取滚动值或撤消新值。检查 e.OldValue 和 e.NewValue 属性。
确保为 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
的改进版本
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
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
递增 val
。 ScrollEventArgs
可用于判断滚动条是向上滚动还是向下滚动。
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
您正在更改 Scroll 事件中的 VScroll 值,这毫无意义!您应该在此事件中读取滚动值或撤消新值。检查 e.OldValue 和 e.NewValue 属性。
确保为 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
的改进版本
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