0

画像ボックスから継承するカスタムコントロールを使用して、ボタンをシミュレートしています。私は機能的にほとんど正しく働きたいと思っています。ボタンの押下をシミュレートするものを入れたいです。そのため、ユーザーがボタンを押すと、コントロールの画像に一瞬何かが起こります。以下のコードはこれに対する大丈夫な解決策ですか、それとも誰かがより良い方法を提案できますか?

時間x以降の画像を置き換えるタイマーなどを使用しているのでしょうか。

ありがとう

 private void MediaButton_MouseClick(object sender, MouseEventArgs e)
        {
            this.Image = this.downImage;
            this.Invalidate();
            this.Refresh();

            //Do something
            System.Threading.Thread.Sleep(200);

            this.Image = this.upImage;
            this.Invalidate();
            this.Refresh();
        }

更新:これはタッチスクリーンデバイス用です

4

5 に答える 5

1

MouseDown および MouseUp イベントを使用しないのはなぜですか? 次に、通常のボタンを押したときに何が起こるかをシミュレートできます。つまり、MouseDown で画像を別のもの (押されたボタンなど) に変更し、マウスアップで元に戻します。

于 2012-05-18T10:45:13.627 に答える
1

いいえ、ここで使用したくありませんThread.Sleep(xx)... 実際、それを使用するコードを目にするたびに、それが間違っているか、少なくとも非常に悪い考えであると考えることができます。また、あらかじめ決められた時間待機したくないため、タイマーも必要ありません。

代わりに、「ダウン」または「アクティブ」な画像を表示する時間をユーザーに決定させます。MouseDownイベントと同期しMouseUpます。イベントが発生したときに画像を「ダウン」または「アクティブ」画像に変更し、MouseDownイベントで元の画像にリセットしますMouseUp

private void MediaButton_MouseDown(object sender, MouseEventArgs e) 
{
    MediaButton.Image = downImage;
}

private void MediaButton_MouseUp(object sender, MouseEventArgs e) 
{
    MediaButton.Image = upImage;
}

「ダウン」または「アクティブ」なイメージは、ユーザーがボタンをクリックしている間 (マウス ボタンをコントロールの上に置いている間) 表示され、マウス ボタンを離すと削除されます。

悪いデザインがなくても、探しているような視覚的なフィードバックが得られます。

于 2012-05-18T10:45:33.027 に答える
1

テストされていませんが、mouseup と mousedown の間でコードを分割する方が適切と思われます。
これにより、コマンド ボタンの動作がより適切にシミュレートされます。

private void MediaButton_MouseDown(object sender, MouseEventArgs e) 
{ 
            this.Image = this.downImage; 
            this.Invalidate(); 
            this.Refresh(); 
 }

private void MediaButton_MouseUp(object sender, MouseEventArgs e) 
{
            this.Image = this.upImage; 
            this.Invalidate(); 
            this.Refresh(); 
} 
于 2012-05-18T10:46:21.503 に答える
1

Sleep を使用してユーザーを待たせないでください。これは最初の数回は楽しいかもしれませんが、すぐに古くなって面倒になります。

Click を MouseDown イベントと MouseUp イベントに分割できます。これにより、ユーザーは各画像をどのくらいの時間見たいかを選択できます。

于 2012-05-18T10:44:08.110 に答える
0

おそらく WPF を使用していないことを付け加えておきます (おそらく WinForms だと思います) が、WPF を使用している場合は、アニメーションを使用してより充実したユーザー エクスペリエンスを提供できます。

于 2012-05-18T11:35:08.450 に答える