0

プロセスの実行中に表示されるプログレスバーとキャンセルボタンを備えたフォームがあります。ボタンの「キャンセル」プロパティは true に設定されているため、エスケープを押すとプロセスがキャンセルされます。

ただし、ボタンはフォーカスを取得できるフォーム上の唯一のコントロールであるため、プロセスの実行中にユーザーが誤って Enter キー (またはスペースバー) を押すと、プロセスはキャンセルされます。

(フォーム上で) KeyPreview を true に設定してから KeyAscii を 0 に設定することでスペース バーが機能しないようにしましたが、ボタン クリック イベントが最初に発生するため、このアプローチはエンター キーでは機能しないようです。

ボタンの TabStop プロパティを「false」に設定しようとしましたが、変更はありません。

4

2 に答える 2

7

私の意見では、Enter キーでキャンセル ボタンがアクティブになるはずです。それとも、ユーザーがマウスに手を伸ばす必要がありますか? なぜ?

ユーザーが操作をキャンセルした後に確認ダイアログのみを追加することをお勧めします。これにより、誰かが誤って Enter キーを押した場合に、「いいえ、キャンセルしたくない」と言って再開できるようになります。

しかし、ユーザーとしては、キャンセル ボタンにフォーカスがあり、キーボードの Enter キーを押してもアクティブにできないとイライラします。

私の2セント

于 2008-10-02T06:31:25.370 に答える
2

サイズ 1x1、キャプションなし、境界線なしなどのデフォルト ボタンを追加します。何もしないハンドラーを作成します。Escape キーは、現在と同様にキャンセルを行います。

于 2008-10-02T06:35:32.333 に答える