グリッドビューでアイテムを上下に移動するための2つのボタンがあるWindowsアプリケーションがあります。
But the problem is:
クリック イベントは、キーを離したときにのみ呼び出されます。
What I need:
キーを押したままにするとクリック イベントが発生し、キーを離すと停止します。スクロールアップダウンボタンのようなものを意味します。
グリッドビューでアイテムを上下に移動するための2つのボタンがあるWindowsアプリケーションがあります。
But the problem is:
クリック イベントは、キーを離したときにのみ呼び出されます。
What I need:
キーを押したままにするとクリック イベントが発生し、キーを離すと停止します。スクロールアップダウンボタンのようなものを意味します。
クリック イベントを使用しないでください。MouseDown および MouseUp イベントを使用します。
または、キーの押下を処理する場合は、KeyDown および KeyUp イベントを使用します。
ボタンの MouseDown イベントで、たとえばいくつかのクラス レベル メンバーを変更します。
blnButtonPressed = ture;
ボタン変更の MouseUp イベント時
blnButtonPressed = false;
そして、これらの 2 つの状態の間で行うことは何でもしてください....
押されたときに 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 をツールボックスからフォームにドラッグします。