2009-07-23 11 views
1

可能性の重複:
C# OpenFileDialog Non-Modal possible.NETファイルを開く]ダイアログ

は、私はC#Windowsフォームプロジェクトに取り組んでいます。開いているファイルのダイアログが表示されている間、私はGUIの中で何かを選択することができません。 openfileダイアログを開いて、メインUI上の他のコントロールを選択できる方法はありますか?

+5

この質問の正確な複製:http://stackoverflow.com/questions/478476/c-openfiledialog-non-modal-possible –

+0

私は、この1つが指摘している問題について、安全で受け入れられる答えを考え出すことができましたに。うまくいけば、それはあなたが必要とするもののために働くでしょう。 – Joshua

答えて

0

DBAN、

OpenFileDialogクラスは、モードレス状態のフォームを開きます。それは、親をロックアウトされていないShowメソッドをサポートしていません。

私が知る限り、ファイルダイアログを開く唯一の方法はこのようなもので、モーダルです。 ShowDialogメソッドは、フォームをモーダルとして開きます。

OpenFileDialog dlg = new OpenFileDialog(); dlg.ShowDialog();

非モーダルで開く場合は、独自の開いているファイルダイアログクラスを作成できます。

でも、これが本当に必要かどうかを検討する必要があります。通常、ファイルを開くダイアログがユーザーに表示されるのは、アプリケーションにファイルが必要なためです。ユーザーが平均してアプリでやっていなければならないことは他にありません。

2

標準のOpenFileDialogでこれを行う方法はありません。基本クラスとしてFileDialogではなくFormを使用して、独自に作成する必要があります。これにより、非モーダルの独自のバージョンを設計することができます。

これは、私はこれに反対していると言われています。 Windowsのファイルダイアログは、デフォルトでモーダルです。人々はあなたのアプリケーションからこの動作を期待しています。それを変更すると、混乱と問題のみにつながります。これは、しばしば良いアイデアのように見えるかもしれませんが、あなたのアプリケーションをエンドユーザーにとって使いにくく複雑にする傾向があります。

1

一般的なダイアログはモーダルダイアログであり、定義上、プロセス内の他のウィンドウとの相互作用を有効にしません。あなたの質問への答えはいいえ、それを行う方法はありません。些細な作業ではなく、ファイルシステムとやりとりするために、サードパーティのコントロールや自己作成のコントロールを使用して、独自のダイアログをロールバックする必要があります。

関連する問題