「ABC * .pdf」のようなカスタムフィルターを指定することは可能ですか?「すべてを表示PDFこれはABCで始まります」?」
指定できるのは* .pdf、*。doc、。などのみです。
ありがとうフロリアン
Updated
次の方が良いことに気づいた後、私のソリューションを少し変更しました。
これは完全な「ハードフィルター」ではありませんが、FileName
プロパティを使用することでニーズを満たせるはずです。
using System;
using System.Windows.Forms;
namespace TestingFileOpenDialog
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.openFileDialog1.FileName = "pro*";
this.openFileDialog1.Filter = "Pdf Files|*.pdf";
this.openFileDialog1.ShowDialog();
}
}
}
これは、使用しているOSに依存する可能性がありますが、私の場合はWindows 8で動作します。
また、これはすべての無関係なファイルを「永続的に」除外するわけではありませんが、少なくとも最初のフィルターは提供します。
結果:
(なしpro*
[FileName]フィールドに、他のいくつかのPDF files)が表示されます。
はいといいえ。
No: [〜#〜] msdn [〜#〜] ページをご覧ください。フィルターはそのようには使用されません。拡張機能専用です。
はい:OpenFileDialogを拡張/模倣する独自のクラスを作成し、必要な処理を行う正規表現を使用して、現在のフォルダー内のすべてのファイルに対して単純に一致するものを実行できます(作業が必要になる場合があります、しかし、あなたが本当にそれがとても悪いことを望むならば、それのために行きなさい:))
私のコメントで述べたように:
残念ながらそれは不可能です。ただし、独自のFileDialogを作成できます
独自のFileDialogを作成するには、次の方法を使用できます。
string[] Directories = Directory.GetDirectories(Path);
string[] Files = Directory.GetFiles(Path);
Files
- Arrayを仕様に合わせてフィルターします。
List<string> wantedFiles = Files.ToList().Where(x => x.StartsWith("ABC"));
ファイルアイコンを取得するには、Shell32.dllのDLLImport
を使用する必要があります。
[DllImport("Shell32.dll")]
これで提供されるコード SOの質問 は問題を解決するはずです。
私の兄弟によって書かれた独自のFileDialogsを実装するプロジェクトはここにあります: Download project
要するに、これでうまくいくはずです:
foreach (string file in Directory.GetFiles(Path)
.Where(x => new DirectoryInfo(x).Name.StartsWith("ABC")))
{
//Add the string to your ListView/ListBox/...
}
答えは簡単です:[〜#〜] no [〜#〜]
プロパティFilter
asbelowで特定のファイルタイプのみを許可するようにフィルターを設定できます。
fileOpenDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
ただし、ファイル名のフィルタリングはNOT
可能です。
その場合、独自のカスタムOpenFIleDialog
を作成できます。
詳細については、このリンクを参照してください。 C#でカスタマイズされたファイルを開くダイアログを作成する方法