4

で拡張機能の表示をフィルタリングしないのはなぜOpenFileDialogですか? DATこれをテストしましたが、ダイアログに拡張子が表示されません。DATリスト拡張子の最初の拡張子を取得するOpenFileDialogと、ダイアログでフィルター処理されます。C#Win XP で Application-FrameWork 3.5を使用しています。

これが私のコードです:

OpenFileDialog openFileDialog = new OpenFileDialog();

string VideoFormat = "Video files |*.wmv; *.3g2; *.3gp; *.3gp2; *.3gpp; *.amv; *.asf;  *.avi; *.bin; *.cue; *.divx; *.dv; *.flv; *.gxf; *.iso; *.m1v; *.m2v; *.m2t; *.m2ts; *.m4v; " +
                          " *.mkv; *.mov; *.mp2; *.mp2v; *.mp4; *.mp4v; *.mpa; *.mpe; *.mpeg; *.mpeg1; *.mpeg2; *.mpeg4; *.mpg; *.mpv2; *.mts; *.nsv; *.nuv; *.ogg; *.ogm; *.ogv; *.ogx; *.ps; *.rec; *.rm; *.rmvb; *.tod; *.ts; *.tts; *.vob; *.vro; *.webm; *.dat; ";


openFileDialog.Filter = VideoFormat;
openFileDialog.ShowDialog();

しかし、このコードはダイアログで DAT 拡張子をフィルタリングしました:

OpenFileDialog openFileDialog = new OpenFileDialog();

            string VideoFormat = "Video files | *.dat; *.wmv; *.3g2; *.3gp; *.3gp2; *.3gpp; *.amv; *.asf;  *.avi; *.bin; *.cue; *.divx; *.dv; *.flv; *.gxf; *.iso; *.m1v; *.m2v; *.m2t; *.m2ts; *.m4v; " +
                      " *.mkv; *.mov; *.mp2; *.mp2v; *.mp4; *.mp4v; *.mpa; *.mpe; *.mpeg; *.mpeg1; *.mpeg2; *.mpeg4; *.mpg; *.mpv2; *.mts; *.nsv; *.nuv; *.ogg; *.ogm; *.ogv; *.ogx; *.ps; *.rec; *.rm; *.rmvb; *.tod; *.ts; *.tts; *.vob; *.vro; *.webm; ";


openFileDialog.Filter = VideoFormat;
openFileDialog.ShowDialog();
4

1 に答える 1

7

これは、OpenFileDialogオブジェクトの Filter プロパティの正しい形式です。

(*.jpg)|*.jpg|Image Files (*.png)|*.png|Image Files (*.jpeg)|*.jpeg

これを試して:

        OpenFileDialog openFileDialog = new OpenFileDialog();
        string formats = "*.dat; *.wmv; *.3g2; *.3gp; *.3gp2; *.3gpp; *.amv; *.asf;  *.avi; *.bin; *.cue; *.divx; *.dv; *.flv; *.gxf; *.iso; *.m1v; *.m2v; *.m2t; *.m2ts; *.m4v; " +
                  " *.mkv; *.mov; *.mp2; *.mp2v; *.mp4; *.mp4v; *.mpa; *.mpe; *.mpeg; *.mpeg1; *.mpeg2; *.mpeg4; *.mpg; *.mpv2; *.mts; *.nsv; *.nuv; *.ogg; *.ogm; *.ogv; *.ogx; *.ps; *.rec; *.rm; *.rmvb; *.tod; *.ts; *.tts; *.vob; *.vro; *.webm";

        string[] exts = formats.Split(';');
        string filter = string.Empty;
        foreach (string ext in exts)
        {

                filter += "Video Files (" + ext.Replace("*", "").Trim() + ")|" + ext + "|";
        }

        openFileDialog.Filter = filter.Remove(filter.Length-1,1);
        openFileDialog.ShowDialog();

アップデート

これは 1 つのオプションのみを示していますが、すべてのビデオ タイプを選択できます。

        OpenFileDialog openFileDialog = new OpenFileDialog();
        string formats = "All Videos Files |*.dat; *.wmv; *.3g2; *.3gp; *.3gp2; *.3gpp; *.amv; *.asf;  *.avi; *.bin; *.cue; *.divx; *.dv; *.flv; *.gxf; *.iso; *.m1v; *.m2v; *.m2t; *.m2ts; *.m4v; " +
                  " *.mkv; *.mov; *.mp2; *.mp2v; *.mp4; *.mp4v; *.mpa; *.mpe; *.mpeg; *.mpeg1; *.mpeg2; *.mpeg4; *.mpg; *.mpv2; *.mts; *.nsv; *.nuv; *.ogg; *.ogm; *.ogv; *.ogx; *.ps; *.rec; *.rm; *.rmvb; *.tod; *.ts; *.tts; *.vob; *.vro; *.webm";

        openFileDialog.Filter = formats;
        openFileDialog.ShowDialog();

それはまさにそのようでなければなりません。

于 2013-01-28T22:27:56.463 に答える