0

グリッドビューでアイテムを上下に移動するための2つのボタンがあるWindowsアプリケーションがあります。

But the problem is:

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

What I need:

キーを押したままにするとクリック イベントが発生し、キーを離すと停止します。スクロールアップダウンボタンのようなものを意味します。

4

3 に答える 3

1

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

または、キーの押下を処理する場合は、KeyDown および KeyUp イベントを使用します。

于 2012-04-17T05:59:33.250 に答える
1

ボタンの MouseDown イベントで、たとえばいくつかのクラス レベル メンバーを変更します。

blnButtonPressed = ture;

ボタン変更の MouseUp イベント時

blnButtonPressed = false;

そして、これらの 2 つの状態の間で行うことは何でもしてください....

于 2012-04-17T06:03:06.753 に答える
0

押されたときに Click イベントを発生させるカスタム ボタンを作成できます。これを行う簡単な方法は次のとおりです。

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();
    }      
}

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

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

于 2012-04-17T06:57:40.820 に答える