何もないフォームにスクロールバーを貼っつけて、一回だけスクロールすると、『●』が出力ウインドウに2回表示されてしまいます。メッセージボックスも二つ表示されます。何故でしょうか?
Private Sub HScrollBar1_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
Debug.WriteLine("●")
MessageBox.Show("777")
End Sub
Private Sub HScrollBar1_Scroll(ByVal sender As Object, ByVal e As ScrollEventArgs) Handles HScrollBar1.Scroll
Debug.WriteLine(String.Format("●Type={0}, NewValue={1}", e.Type, e.NewValue))
End Sub
と書いた上で、いろいろなスクロール方法を試してみてください。
・つまみをドラッグする。
・余白部分をクリックする。
・余白部分を押し続ける。
・両端のボタンをクリックする。
・両端のボタンを押し続ける。
・矢印キーを押す。
・矢印キーを押し続ける。
レスありがとうございます。
私が試したのは『・両端のボタンをクリックする』のみでした。
以下のコードで全ての場合を試しました。
Private Sub HScrollBar1_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
Static int_i As Integer = 0
If int_i = 0 Then
Me.HScrollBar1.LargeChange = 1
End If
int_i = int_i + 1
Debug.WriteLine(int_i.ToString)
End Sub
・つまみをドラッグする。→一回ずつイベントが起動します。
・余白部分をクリックする。→二回ずつイベントが起動します。
・余白部分を押し続ける。→奇数・偶数の両方で止まるので、おそらく一回ずつイベントが起動します。
・両端のボタンをクリックする。二回ずつイベントが起動します。
・両端のボタンを押し続ける。奇数・偶数の両方で止まるので、おそらく一回ずつイベントが起動します。
・矢印キーを押す。→最初は一回、後は二回ずつイベントが起動します。
・矢印キーを押し続ける。奇数・偶数の両方で止まるので、おそらく一回ずつイベントが起動します。
ん〜正直、正確には把握しずらいです。
> 以下のコードで全ての場合を試しました。
ではなく、私のコードで試して見てください。
大変失礼しました。早速試行してみました。
・つまみをドラッグする。
●Type=ThumbTrack, NewValue=0 ←①クリック
●Type=ThumbTrack, NewValue=2 ←②ドラッグ中
●Type=ThumbPosition, NewValue=2 ←③ボタンを離す
●Type=EndScroll, NewValue=2 ←③ボタンを離す
・余白部分をクリックする。
●Type=LargeIncrement, NewValue=10 ←①クリック
●Type=EndScroll, NewValue=10 ←②ボタンを離す
・余白部分を押し続ける。
●Type=LargeIncrement, NewValue=10 ←①クリック
●Type=LargeIncrement, NewValue=20 ←②クリック継続中
●Type=EndScroll, NewValue=20 ←③ボタンを離す
・両端のボタンをクリックする。
●Type=SmallIncrement, NewValue=1 ←①クリック
●Type=EndScroll, NewValue=1 ←②ボタンを離す
・両端のボタンを押し続ける。
●Type=SmallIncrement, NewValue=1 ←①クリック
●Type=SmallIncrement, NewValue=2 ←②クリック継続中
●Type=EndScroll, NewValue=2 ←③ボタンを離す
・矢印キーを押す。
●Type=EndScroll, NewValue=0 ←①1回目
●Type=SmallIncrement, NewValue=1 ←②2回目
●Type=EndScroll, NewValue=1 ←②2回目
●Type=SmallIncrement, NewValue=2 ←③3回目
●Type=EndScroll, NewValue=2 ←③3回目
・矢印キーを押し続ける。
●Type=SmallIncrement, NewValue=1 ←①矢印キーを押す
●Type=SmallIncrement, NewValue=2 ←②矢印キー押し継続中
●Type=EndScroll, NewValue=2 ←③矢印キーを離す
詳しいことはわからないですが、最初に『ThumbTrack』等が発生して、最後に必ず『EndScroll』イベントが発生する。だから単純にスクロールイベントのみで見た場合、複数回スクロールイベントが発生したように見えたわけですね。スクロールイベントの種類も知らなかったとは...まだまだ若輩です。
ありがとうございました!