2009-05-28 20 views

答えて

2

BCL OpenFileDialogを使用して直接行う方法はありません。

私はオプションのカップルを考えることができます。

1)だけでサポートしたいん種類のすべてを持っているフィルタを確認します。このタイプの操作については、これが最も一般的な方法なので、これは私の推奨事項です。

2)このcustom OpenFileDialog implementationの行に沿って何かを使用してください。 OnFileNameChanged()メソッドをオーバーライドして、選択したファイルの拡張子が.txtの場合は、[開く]ボタンを無効にすることができます。

3)ユーザーが.txtファイルを選択し、エラーダイアログをスローし、ファイルダイアログを再度開きます。しかし、これは私にとってはあまりにも控えめで、それほど偉大ではないと感じています....

+0

オプション1が最適です。本当に私のソフトウェアのユーザーは、ディレクトリ内の.txtファイルが表示されないことを尋ねました。この場合、.txtファイルを決して選択しないためです。 .txtファイルは、見なければならないファイルのリストを乱雑にするだけです。 –

+0

@ZGray:それは私の推薦です。これはWindowsでの通常の作業方法です。 –

1

Found with Google search "OpenFileDialog"

EDIT:EXCLUDE側面に拡大しないことについて申し訳ありません。この極端に行く必要はないかもしれませんが、あなたのニーズを満たすでしょう...

  • ユーザーが選択できるすべてのファイルの再帰的なディレクトリ検索を行います。 (うまくいけば、それは小さな一連のフォルダです)
  • これらのファイルの拡張子を一意に識別します。 (System.IO.Path.GetExtension()とLinqの.Distint()メソッドがここでうまくいくかもしれません)
  • リストから ".txt"エントリを削除します。
  • これらの拡張子をループしてフィルタ文字列を作成します。
+0

特定のファイルを除外することができるかどうかという疑問がありました。答えは、特定のファイルにフィルタをかける方法を示しています。 OPはtxtを除くすべてのファイルを必要とします。 – BFree

+0

それは私の質問に全く答えません。フィルターの仕組みを理解しています。 .txtファイルを含まないすべての.txtファイルを除外したい。 –

+0

このフィルタを使用することは確かに可能です。私が言及しておかなければならない考えは、開発者が利用可能なすべての拡張子を見つけてフィルタに含めるためにディレクトリ検索を行う必要があるかもしれないが、フィルタに* .txtを含めないことです。 –

4

私はこれが可能ではないと思います。フィルタを設定する方法は、表示するファイルを選択できるということですが、「すべてのファイルを除く...」と表示する方法はないと思います。それを考えてみてください。これはWindowsでOpen File Dialogを見たことがありますか?私は今まで見たことがないと思う。

すべてのファイルを選択し、許可されていないファイルを選択するか、対処できるすべてのファイルにフィルタリングするかどうかをユーザーに確認することをお勧めします。

+0

さて、私はこれが当てはまるのではないかと心配しました。ちょうどそれを行う方法があるかどうか疑問に思った。答えをありがとう、実際に私の質問をお読みください。 –

0

私はこれができないのですか?あなたは

  • は、a)長許されるべきすべての拡張機能のリスト、または

  • Bが含まれるように)持っているすべての拡張を許可した後、再び開き、コードに簡単なチェックを使用しますどちらか選択されたファイルの拡張子が.txtの場合のダイアログ。

また、この質問にはもう少し詳しい説明がありますか?私は明示的にを必要とするかもしれないシナリオを想定するのが難しいです特定の拡張子を除外します。ほぼすべての状況において、フィルタ(ちょっとしたコードでチェックしているもの)で逃げることはできません。

+0

このシナリオでは、ユーザーがファイルの一覧を乱雑にする.txtファイルを処理する必要がないようにしたいだけです。 –

0

ここでは、まったく異なる手法を使用していますが、これはほとんど使用しません。

OpenFileDialogを使用する代わりに、必要な特定の機能を分析し、独自のダイアログボックスを作成します。必要なフィルタリングを簡単に提供できますが、その難しさは新しいUIの実装と維持に移ります。

私はこれを行うことを推奨していませんが、ユーザーが必要としているものに固執していることがあります。

別の方法:ダイアログを使用する代わりに、アプリケーション内でうまく収まるようなものを作りましょう。これは可能ではないかもしれませんが、アプリについてはあまりよく分かりません。

0

フィルタをに設定すると、ファイルダイアログボックスの内線番号が除外されます。

しかし、FileOkイベントの代理人をダイアログに実装することはできます。このイベントは、ユーザーが選択したファイルが受け入れられる直前に発生し、イベント引数にはCancelというプロパティがあり、選択できないように設定できます。

間違ったファイルを実際に見えないようにエレガントではありませんが、間違った種類のファイルの選択を禁止することができます。

PS:ファイルが受け入れられなかった理由をユーザーにフィードバックすることを忘れないでください。そうしないと、「txt」ファイルを選択したときにダイアログが閉じない理由が不思議に思うかもしれません。

関連する問題