2012-04-17 12 views
0

グリッドビュー内で項目を上下に移動するためのボタンが2つあるWindowsアプリケーションがあります。ボタンは上下にスクロールするように動作するはずです

But the problem is:

私がキーを離したときにのみクリックイベントが呼び出されます。

What I need:

クリックイベントは、私が押したときに起動し、キーを押しながらIキーを離すと停止する必要がありますする必要があります。上下スクロールのようなものを意味します。

答えて

1

ボタンのMouseDownイベントでボタン変更のMouseUpイベント

blnButtonPressed = false; 

、これまであなたがこの2つの状態の間で何をしますか上のインスタンス

blnButtonPressed = ture; 

のためのいくつかのクラスレベルのメンバーを変更....

+0

どこでタスクを実行する必要があります.. ..? –

+0

タスクの新しいスレッドを開始することも、タスクのバックグラウンド作業を開始することもできます。これを理解するのに役立ちます。http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx – Adil

+0

ありがとうございました...私のために働いた... –

1

クリックイベントは使用しないでください。 MouseDownおよびMouseUpイベントを使用します。

キープレスを処理する場合は、KeyDownイベントとKeyUpイベントを使用します。

+0

しかし、私はキーが押されている間に仕事をしたい。 –

0

カスタムボタンを作成することができます。クリックするとクリック音が鳴ります。これは簡単な方法です:

public class PressableButton : Button 
{ 
    private Timer _timer = new Timer() { Interval = 10 }; 

    public PressableButton() 
    { 
     _timer.Tick += new EventHandler(Timer_Tick); 
    } 

    private void Timer_Tick(object sender, EventArgs e) 
    { 
     OnClick(EventArgs.Empty); 
    } 

    protected override void OnMouseDown(MouseEventArgs mevent) 
    { 
     base.OnMouseDown(mevent); 
     _timer.Start(); 
    } 

    protected override void OnMouseUp(MouseEventArgs mevent) 
    { 
     base.OnMouseUp(mevent); 
     _timer.Stop(); 
    }  
} 

ボタンを押した後、10msごとにティックが開始されます(間隔を変更することができます)。タイマー・ティック・イベント・ハンドラでは、このボタンはClieckイベントを発生させます。

プロジェクトをコンパイルして、ツールボックスからPressedButtonをフォームにドラッグするだけで使用できます。

関連する問題