1

カスタムスクロールバーを作成しようとしていますが、画像をボタンとして使用しています。今、単純なSilverlight:MouseLeftButtonDownイベントを繰り返し発生させるためのタイマー

私はちょうど罰金のMouseLeftButtonDownとアップイベントを処理するが、私は何をしたいのですが、そのが押されている間、すべての非常に多くのイベントが発射されるトリガーミリ秒であることができますについては

私はこれを試しましたが、それほどうまくいきませんでした。提案?

public delegate void Changed(RangeScrollButtonControl sender, int value); 
public event Changed OnChanged; 
private System.Threading.Timer Timer; 

private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    this.Timer = new System.Threading.Timer(Timer_Callback, null, 0, 100); 
} 

private void Image_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
{ 
    this.Timer = null; 
} 

private void Timer_Callback(object sender) 
{ 
    if (this.OnChanged != null) 
    { 
     this.OnChanged(this, 1); 
    } 
} 

答えて

2

探している機能はリピートボタンです。これは、マウスボタンを押したままクリックイベントを繰り返し発生させます。イベントの遅延と間隔を設定できます。

次に、このことができますSilverlight Show

希望で画像を使用するには、このボタンのスタイルを設定することができます。

0

「正常に動作していない」部分はどれですか?

また、Silverlghtのスクロールバーをこのblog postに表示されているものと同様に書き換えたり、

+0

Timerオブジェクトはスレッドセーフではなく、クロススレッド例外を実行していました。解決策はDispatchTimerを使用することでしたが、現在は問題なく動作しています。 – Gautam

0

ストーリーボードをタイマーとして使用します。ような何か:

次にあなたがMouseSTB.Beginを行うことができます。ストーリーボードが終了したら、MouseSTB.Completeedイベントでそれを捕まえることができます。このイベントでは、これまでに何をしたらいいのかをやり直すことができます。 mouseover、mouseenter、mouseleaveの各イベントにいくつかのフラグを設定することで、簡単に制御することができます。私は多くの場所でこれらのタイマーを使用し、彼らはうまく動作し、彼らはプロセッサをペグしないでください。

関連する問題