TrackBar.Scroll イベント

解決


るいべ  2009-10-05 19:11:36  No: 146348  IP: 192.*.*.*

連投ですみません。
TrackBar.Scroll イベントを他のイベント(ボタンなど)と
同時に発生させることは可能ですか?

編集 削除
Hongliang  2009-10-05 20:36:40  No: 146349  IP: 192.*.*.*

一つ前の質問ではスルーしてしまいましたが、Scroll イベントは
> マウス操作またはキー操作でスクロール ボックスが移動すると発生します。
というものです。
望ましいタイミングのイベントは、ValueChanged イベントの方ではないでしょうか。
> スクロール ボックスの移動またはコードによる操作によって、トラック バーの Value プロパティが変更されると発生します。

TrackBar1_Scroll に書いた処理を他のイベントでも使いたいのなら、その処理を別メソッドに切り出し、それぞれからそのメソッドを呼び出すようにするのが良いでしょう。

編集 削除
るいべ  2009-10-06 12:10:51  No: 146350  IP: 192.*.*.*

メソッドをつくることでうまく動きました。
しかし、今度はマウスでバーを操作しても反応しなくなりました。
それでTrackBar1_ ValueChanged イベントも設定すると
思った動きを実現できました。

しかし、同じコードをメソッドとイベントに書くのは不自然な感じがするのですがいかがなものでしょう?


スクロール速度をバーで調節するイベント 
Private Sub TrackBar1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.ValueChanged
        Dim newspeed As Integer = 1 * TrackBar1.Value
        Dim newspeed2 As Integer = 1 * TrackBar1.Value
        Timer1.Interval = newspeed
        Timer2.Interval = newspeed2
    End Sub

スクロール速度を調節するメソッド
Private Sub speed()
        Dim newspeed As Integer = 1 * TrackBar1.Value
        Dim newspeed2 As Integer = 1 * TrackBar1.Value
        Timer1.Interval = newspeed
        Timer2.Interval = newspeed2
    End Sub

編集 削除
YuO  2009-10-06 12:56:57  No: 146351  IP: 192.*.*.*

> しかし、同じコードをメソッドとイベントに書くのは不自然な感じがするのですがいかがなものでしょう?

なんのためのspeedメソッドでしょうか。
単純に,イベントハンドラとなるメソッドの中で委譲先のメソッドを呼べばよいのです。

Private Sub TrackBar1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.ValueChanged
  speed()
End Sub

編集 削除
るいべ  2009-10-06 13:06:43  No: 146352  IP: 192.*.*.*

>なんのためのspeedメソッドでしょうか
実は実行させたときにモノは動いているのです。その時点では
バーは最大値にあるのにかかわらず速度は最低速度なのです。
それでバーを一度最小値にもっていき、それから最大値にもってくれば最大速度がでるといったありさまなのです。

なにかよい方策があったらよろしくお願い致します。

編集 削除
るいべ  2009-10-06 13:11:24  No: 146353  IP: 192.*.*.*

YuOさんへ
大変失礼しました。
おしえていただいた方法でよかったのですね。
Hongliang も有り難うございました。

編集 削除
るいべ  2009-10-06 19:26:36  No: 146354  IP: 192.*.*.*

敬称を忘れてしまい失礼しました。
Hongliangさん も有り難うございました。

編集 削除