VerticalSrollBar увеличивает значение дважды в vb.net - PullRequest
0 голосов
/ 17 октября 2019
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 в текстовое поле. Пожалуйста, помогите мне решить эту проблему.

Ответы [ 3 ]

1 голос
/ 18 октября 2019
  1. Вы меняете значение VScroll в событии Scroll, что не имеет смысла! Вы должны прочитать значение прокрутки в этом событии или отменить новое значение. Проверьте свойства e.OldValue и e.NewValue.

  2. Убедитесь, что вы присвоили допустимое значение свойству Minimum VScroll, учитывающему минимальный размершрифт, который не равен 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

Удачи.

1 голос
/ 18 октября 2019

Вы только говорите, чтобы увеличивать val с val = val + 10. 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
0 голосов
/ 20 октября 2019

Этот код правильный, я достиг того, чего хотел достичь. Теперь этот код плавно увеличивается и уменьшается размер шрифта 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...