2013-05-04 4 views
1

나는 checkedListBox를 가지고 있습니다. 어떤 폴더 안에 파일을로드합니다. 선택하면 실행/열 수 있습니다. 내가 뭘 하려는지 파일 목록 상자 안에로드하는 것입니다; 경로가 없으면 입니다.C# folderBrowserDialog + openFileDialog checkedListBox의 경로 숨김

즉 : 환언

"C:\Folder1\anotherfolder\myfile1.txt" 

; 나는 단지 보여지기를 원한다 : 파일명 (확장자의 유무에 관계없이).

즉 :

"myfile1.txt" 

코드 내가 사용하고 있습니다 :

//... 
    private string openFileName, folderName; 
    private bool fileOpened = false; 
//... 

     OpenFileDialog ofd = new OpenFileDialog(); 
     FolderBrowserDialog fbd = new FolderBrowserDialog(); 

     if (!fileOpened) 
     { 
      ofd.InitialDirectory = fbd.SelectedPath; 
      ofd.FileName = null; 


      fbd.Description = "Please select your *.txt folder"; 
      fbd.RootFolder = System.Environment.SpecialFolder.MyComputer; 
      if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
      { 
       string foldername = fbd.SelectedPath; 
       foreach (string f in Directory.GetFiles(foldername)) 
       checkedListBox1.Items.Add(f); 
      } 

내가 해봤 여러 가지 방법 ... 만 folderBrowserDialog와 는 할 수 없습니다 것으로 보인다. 하지만 이건 OFD와 FBD를 결합하여 (이론상) 어떻게 든 작동해야합니다. 나는 그것을 이해할 수 없다. 이후 나는 C# 프로그래밍에 "새로운"느낌이 듭니다. 가능하면 가능합니다. 또는 그것이 어떻게 행해지 는가?

미리 감사드립니다.

리카르도

답변

1

당신은 그냥

using System.IO; 

을 추가해야합니다 모든 단순히

checkedListBox1.Items.Add(Path.GetFileName(f)); 

에 파일을 추가하는 줄을 변경 OpenFileDialog를 필요하지 않습니다 그리고 당신은 또한 수 모든 것을 하나의 라인 코드로 줄임

checkedListBox1.Items.AddRange(Directory.GetFiles(fbd.SelectedPath).Select(x => Path.GetFileName(x)).ToArray()); 
+0

checkedListBox1.Items.AddRange (Directory.GetFiles (fbd.SelectedPath) .Select (x => Path.GetFileName (x)). ToArray()); 이 작품은 저에게 큰 도움이되었습니다! 첫 번째 경로 만 보여주었습니다. 파일 이름이 아닙니다. 이제 좀 더 공부해야하므로 코드를 이해할 수 있습니다 ^^ 투표 할 수 없습니다 (아직 랭킹이 높지는 않음). 그러나 나는 너의 대답에 위대하다. 감사합니다. – Richard

+0

"Lambda Expressions"및 IEnumerable 확장 방법에 대한 이해를 돕기 위해 다행히 도움이되었습니다. – Steve