2016-03-25 8 views
0
var dlgs = new System.Windows.Forms.OpenFileDialog(); 
     dlgs.CustomPlaces.Clear(); 
     var ListDrives = DriveInfo.GetDrives(); 
     foreach (DriveInfo Drive in ListDrives) 
     { 
      if ((Drive.DriveType == DriveType.Fixed) && (Drive.Name != "C")) 
      { 
       dlgs.CustomPlaces.Add(Drive.Name); 

      } 
      dlgs.ShowDialog(); 
     } 

ローカルドライブCにアクセスできないファイルブラウザを開こうとしていますので、残りのファイルローカルドライブは( "D"、 "E")のようになります。ローカルドライブCにアクセスできないファイルブラウザをC#で開きます

+2

明確化。あなたの問題は何ですか?あなたの現在のコードの効果は何ですか?また、あなたのforeachを 'ShowDialog()'と呼んでいます。 – Nyerguds

+0

[C#OpenFileDialog Lock To Directory]の複製があります。(0120-18753-03) – MUG4N

+0

あなたの最善の策は、次のようなカスタムポップアップを作成することです。カスタムコントロールまたはWPFのユーザーコントロール。私は過去にそれをやった。かなりシンプルになり、あなたが望むことを何でもすることができます。 – niksofteng

答えて

1

私はちょうどOpenFileDialogue class documentationを見ていますが、特定のドライブにユーザーを制限するものはありません。This postは実際に実行できるかどうかについて私に不思議に思っています。 filter ...

+0

しかし、フィルタはファイル用です!ファイルブラウザのドライブへのアクセスを制限するために使用できますか? –

+0

@PraveenEz Ah shoot、あなたは正しいと思います...基本的にファイルブラウザでCの存在を無視して、ユーザーが他のドライブ(たとえばD:とE :)からファイルを選択できるようにしますか?私は、「Cで始まらないすべてのファイルを絶対パスで」指定する方法があると考えていました...もう少し読みましたが、あなた自身が作成する必要があります(https ://social.msdn.microsoft.com/Forums/vstudio/en-US/ae322891-fd55-4027-ae4f-53100ae32852/openfiledialog-restrict-directory-browsing?forum = csharpgeneral)カスタムファイルブラウザのポップアップ! –

1

ユーザがダイアログ内でどこにアクセスできるかを制限することはできません(独自のダイアログを実装しない限り)。

FileOkイベントを使用して、ファイルを開くことができるかどうか(Openボタンを押すかダブルクリックすると実際にダイアログを閉じるかどうかを制限することは可能です)。以下のような

何か:

void DialogFileOk(object sender, CancelEventArgs e) 
{ 
    var dialog = sender as OpenFileDialog; 
    if(dialog == null) return; 
    if(Path.GetPathRoot(dialog.FileName) == @"C:\") 
    { 
    e.Cancel = true; 
    // maybe show messagebox or task dialog informing the user? 
    } 
} 

繰り返しますが、これはユーザーがC:\ドライブを閲覧防ぐことはできませんが、それだけでそのドライブ内のファイルを選択すると、ダイアログを防ぐことができます。

PS:必要に応じて複数選択に対応します。

関連する問題