OpenFileDialog-拡張機能のないファイル名のみが表示されます
-
27-09-2019 - |
質問
C#プログラムには次のコードがあります。
OpenFileDialog fDialog = new OpenFileDialog();
fDialog.Title = "Open a file";
fDialog.Filter =
"NCF files (*.ncf)|*.ncf|All files (*.*)|*.*|No Extensions (*.)|*.";
以下からユーザーを選択できるようになりたいです。
*.ncf (.NCF拡張機能のみのファイルのみ)
**.* (すべてのファイル)
および持っているファイル 拡張機能なし そのような:
filewithnoExtension
***。*はこれを行いますが、同じディレクトリ内の.ncf、.txt、および他のすべてのファイルも表示されます。
拡張機能のないファイル名を表示できるようにしたいだけです。
*でフィルタリング。トリックをしません。 DOSウィンドウで行うときは正常に動作します(dir *。)、しかし、C#は *を無視しているようです。フィルター。
C#でこれを行う方法はありますか?
ありがとう。
解決
他のソフトウェアプログラムが同じ場所にこれらのファイルを作成している場合、そのフォルダー内のすべての拡張機能ファイルにコード(「.xxx」のような無害なもの)を追加してみてください。 それから ダイアログを表示しますか?
編集: または、このMSDNの記事を参照してください。
http://msdn.microsoft.com/en-us/library/ms646960(vs.85).aspx
から フィルター セクション:
CDN_INCLUDEITEM通知メッセージは、ダイアログボックスが表示する名前をフィルタリングする別の方法を提供します。このメッセージを使用するには、OFNHookProcフック手順を提供し、ダイアログボックスを作成するときにOpenFileName構造でOFN_ENABLENCLUDENOTIFYフラグを指定します。ユーザーがフォルダーを開くたびに、ダイアログボックスは、新しく開いたフォルダー内の各アイテムのフック手順にCDN_INCLUDEITEM通知を送信します。フック手順の返品値は、ダイアログボックスがフォルダーのアイテムリストにアイテムを表示するかどうかを示します。
の下にあります エクスプローラースタイルのフック手順 セクションでは、この記事でこれを行う方法について説明します。基本的に、イベントハンドラーをOpenFileダイアログに渡し、ユーザーが新しいフォルダーに移動するたびに、ダイアログはフォルダー内のすべてのファイルを繰り返して、それぞれのイベントハンドラーを呼び出します。イベントハンドラーの内部では、コードを配置して、ファイルに拡張子があるかどうかを判断し、それに応じてtrueまたはfalseを返します。
他のヒント
通常、readmeファイルには拡張機能があります。私はあなたがしたと思いますが、既知のファイルタイプの拡張機能を確認するためにこのフォルダーオプションを確認しましたか?それは何かを変えましたか?
編集#1
率直に言って、私はあなたが作ることができるとは思わない OpenFileDialog 拡張機能のないファイルを表示します フィルター プロパティは拡張機能に基づいています。
おそらくあなたは、 System.IO
などの名前空間オブジェクト DirectoryInfo
, 、たとえば、ブラウジングされたフォルダーファイルを次のように取得できます。 Getfiles()
メソッド、次にLINQを介して自分自身をフィルタリングして、拡張機能なしでファイルを表示します FileInfo.Extension
財産。
編集#2
OpenFileDialogはあるので 密閉, 、ネストされたタイプとして使用し、このネストされたタイプを使用して独自の方法を実装することができます。
これがあなたに役立つことを願っています!
私はこれが機能することを知っています:
fDialog.Filter = "No extension Files|" + null;
複数の選択でテストしていません。
altoughこれは古い投稿です。私は、拡張機能のないファイルのみを表示する方法を探している人に利益をもたらすでしょう。
使っていると思った *.
動作しますが、そうではないので、それはの制限のようです OpenFileDialog
コントロール。
あなたはあなた自身のダイアログを作成することができますが OpenFileDialog
継承可能ではないので、これはほんの小さな機能のために多くの仕事になるでしょう。
拡張機能のないファイルはあなた自身のアプリケーションによって作成されていませんか?その場合、フィルタリングのカスタム拡張機能を提供できます。そうでない場合、私はあなたを助けるために他に何も考えられないのではないかと心配しています:(
幸運を!