2008-10-02 8 views
0

進行状況バーとキャンセルボタンがあるフォームがあり、プロセスが実行されると表示されます。 "キャンセル"ボタンのプロパティがtrueに設定されているので、エスケープを押すと、プロセスがキャンセルされます。発射ボタンからのEnterキーがvb6でもクリックするのを防ぐ

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

KeyPreviewをTrue(フォーム上)に設定してからKeyAsciiを0に設定することで、スペースバーが機能しないようにしましたが、この方法は、ボタンのクリックイベントが最初に発生したときにEnterキーとして機能しません。

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

答えて

2

は何もしないことのためのハンドラを作成し、サイズ1x1の、無キャプション、境界線なし、などとデフォルトボタンを追加します。エスケープキーは今のようにキャンセルされます。

+0

ええ、何もしないで、インラインフォーカスが必要な別のコントロールを追加してください。 – VVS

+0

これは私の元の質問に答えると思うので、公正であるように私はそれを受け入れるべきです。ありがとう。 (Sergioがまだ何かを変えないように私に話したとしても;-) –

+0

このデザインを受け入れると、キャンセルボタンをタップしてスペースキーを押してキャンセルすることができます。ユーザーはマウスは必要ありません。 –

7

私の意見では、Enterキーは、キャンセルボタンを有効にする必要があります。または、ユーザーがマウスに手を差し伸べる必要がありますか?どうして?

ユーザーが操作をキャンセルした後に確認ダイアログを追加することをお勧めします。誤ってEnterキーを押した場合は、「いいえ、取り消したくありません。

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

私の2セントの

+0

イエット - フェアポイントと確認ダイアログはまさに現時点でどうなるのですか?意図的にキャンセルをクリックするか、Enterキーが機能していないときに、確認ダイアログが表示されます。 (ESCAPEがまだ動作していることを覚えておいてください) –

+0

しかし、私が誤ってEscapeを押してプロセスが停止したらどうしますか?それは私の意見では、確認のダイアログがもっと迷惑になるでしょう。しかし、私は状況についてのすべてのコンテキストを持っていないことを知っており、これはそうではないかもしれません。ちょっとした考え。 –

+0

人は確認ダイアログに慣れています。 UIデザインの第1のルールは、使い慣れたデザインを作成することです。 – workmad3

関連する問題