2009-07-30 15 views
0

ユーザーがCtrl + Alt + Qの組み合わせキーを押したときに、 のカスタムキーボードショートカットが作成されました メッセージボックス「本当にしてもよろしいですか?ログアウトする?次に、クリックした場合 はい、私はアプリケーションからログアウトします。messagebox.showのインスタンスを1つだけ表示する#

問題: メッセージボックスのインスタンスが1回だけ表示されていることを確認します。 ユーザーがショートカットを何度押せても問題ありません。

現在、複数のメッセージボックスが表示されます。複数のショートカットを押すと、 が表示されます。

これを解決するにはどうすればよいですか?

+0

AFAIK、msgboxはモーダルであるとされています。カスタムキーボードショートカットはどのように設定されていますか?メニューショートカット(Ctrl + S =ファイル - >保存)と同じですか? – shahkalpesh

+3

メッセージボックスをモーダルにしてみませんか?メッセージボックスのダイアログが閉じられるまで、アプリケーションは使用できません。 – Wayne

+0

どのようにショートカットを作成していますか?あなたは 'System.Windows.Forms.MessageBox'などを使っていますか? – drs9222

答えて

-1

アプリケーションを1回だけ起動できるように、単一インスタンスにする必要があります。

Single Instance App

1

ユーザーが終了しようとしているときを追跡するクラスレベルのブール変数を使用すると、すばやく汚れた方法があります。そうであれば、それはtrueに設定され、ダイアログボックスを表示するルーチンはこのフラグをチェックし、何もせずに戻ります。

0

Singleton Patternのようです。

+0

screaming; p – johnc

+0

質問は、静的クラス 'MessageBox'の静的メソッドである' MessageBox.Show'についてです。ここには何のオブジェクトも関与していません。 –

0

私は、あなた自身のフォームを作成し、mymessageboxform.show()メソッドを使用し、その対話の結果を確認することができると思います。

2

MSDNからのメッセージボックスは、モーダルフォーム上 オブジェクトを除いて発生する可能性があり、モーダルダイアログボックス、どの入力(キーボードや マウスクリック)を意味し です。 は、 (通常は一部のユーザ アクションに応答して)モーダルフォーム を非表示または閉じる必要があります。別のフォームへの入力が行われる前に、 が発生する可能性があります。

connect.microsoft.comにバグを報告してください!カスタムダイアログ(フォーム)を示している場合


...考慮CKさんのコメントを取って、あなたは)(Form.ShowDialog()を使用してフォームを起動して表示しないようにする必要があります。

+0

これはMSソフトウェアがバグを持っていないので、彼は確認のためのカスタムフォームを持っていなければなりません...? – cjk

+0

私は "MSソフトウェアはこれまでどんなバグも抱えていないだろう"とは議論の余地があると思うが、私はあなたにポイントがあると思う!質問は、彼がMessageBoxクラスを使用しているとは言いません。 –

関連する問題