2009-03-01 12 views
13

私のアプリケーションにはフォルダブラウザがありますが、はありませんはFolderBrowserDialogを使いたいです。 (いくつかの理由で、使用するのが苦しいなど)FolderBrowserDialogではなくOpenFileDialogを使用しています

私は標準のOpenFileDialogを使用したいが、ディレクトリ用に変更したい。

例として、µTorrentには素晴らしい設定(Preferences/Directories/Put new download)があります。

  • 自動最後のディレクトリを覚えてVista上で下
  • 使用「お気に入りリンク」バーでVista上
  • 使用検索をテキストフィールドに

    • ペーストフルパス:標準のファイルを開くダイアログにユーザーを有効
    • もっと...

    誰もがこれを実装する方法を知っていますか? C#で。

  • +1

    http://stackoverflow.com/questions/31059/how-do-you-configure-an-openfiledialog-to-select-foldersのデュープだ –

    +0

    この質問の重複: - [どのようにOpenFileDIalogを設定してフォルダを選択するのですか?](http://stackoverflow.com/questions/31059/) – CMS

    答えて

    4

    私はuTorrentについてはわかりませんが、これはFOS_PICKFOLDERSオプションが設定された新しいVistaのIFileDialogによく似ています。

    var frm = (IFileDialog)(new FileOpenDialogRCW()); 
    uint options; 
    frm.GetOptions(out options); 
    options |= FOS_PICKFOLDERS; 
    frm.SetOptions(options); 
    
    if (frm.Show(owner.Handle) == S_OK) { 
        IShellItem shellItem; 
        frm.GetResult(out shellItem); 
        IntPtr pszString; 
        shellItem.GetDisplayName(SIGDN_FILESYSPATH, out pszString); 
        this.Folder = Marshal.PtrToStringAuto(pszString); 
    } 
    

    完全なコードはhereを見つけることができます:それはのような何かを行くための一般的なC#コード。

    0

    this answerによってleetNightShadeを参照してください。

    私はこの解決策を他のどのものよりも優れていると思う3つのことがあります。

    1. 使いやすいです。 プロジェクトでは、2つのファイル(いずれにも組み合わせることができます)のみを含める必要があります。
    2. XPまたはそれ以前のシステムで使用された場合、標準FolderBrowserDialogに戻ります。
    3. 著者は、あなたが合っていると思われる目的のためにコードを使用する許可を与えます。

      コードを自由に取って実行するようなライセンスはありません。

    コードhereをダウンロードしてください。

    0

    WindowsAPICodePack

    var dlg = new Microsoft.WindowsAPICodePack.Dialogs.CommonOpenFileDialog(); 
    dlg.IsFolderPicker = true; 
    
    関連する問題