2012-11-12 25 views
-1

我試圖讓一個WPF應用程序顯示一個樹視圖與我的文件。我無法設法將driveinfo正確放入目錄信息中:treeview getdirectories得到錯誤

  DirectoryInfo sdf = new DirectoryInfo(DriveInfo.GetDrives()[x].ToString()); 

      foreach (DirectoryInfo z in sdf.GetDirectories()) //Run time error here 
      { } 

它給出了運行時錯誤。 下面是完整的代碼:

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     treeView1.Items.Clear(); 
     for (int x = 0; x < DriveInfo.GetDrives().Length; x++) 
     { 
      TreeViewItem y = new TreeViewItem() { Header = DriveInfo.GetDrives()[x] }; 
      treeView1.Items.Add(y); 
      comboBox1.Items.Add(DriveInfo.GetDrives()[x]); 

      DirectoryInfo sdf = new DirectoryInfo(DriveInfo.GetDrives()[x].ToString()); 

      foreach (DirectoryInfo z in sdf.GetDirectories()) //Run time error here 
      { 
       TreeViewItem newmain = new TreeViewItem(); 
       newmain.Header = z.Name; 
       newmain.Tag = z.FullName; 
       y.Items.Add(newmain); 

      } 
     } 

的錯誤是:

IOException異常是未處理

http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28EHIOEXCEPTION%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29;k%28DevLang-CSHARP%29&rd=true

+0

「它給了我一個運行時錯誤」。什麼是例外? [你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

回答

0

你試圖訪問一個驅動器,它沒有準備好 - 例如,未插入介質的CD/DVD驅動器。你需要嘗試訪問RootDirectory之前檢查DriveInfo類的IsReady屬性:

foreach (DriveInfo drive in DriveInfo.GetDrives()) 
{ 
    TreeViewItem y = new TreeViewItem { Header = drive.Name }; 
    treeView1.Items.Add(y); 
    comboBox1.Items.Add(drive.Name); 

    if (!drive.IsReady) continue; 

    DirectoryInfo root = drive.RootDirectory; 
    if (!root.Exists) continue; 

    foreach (DirectoryInfo z in root.GetDirectories()) 
    { 
     y.Items.Add(new TreeViewItem 
     { 
     Header = z.Name, 
     Tag = z.FullName 
     }); 
    } 
} 
+0

非常感謝!現在我一直在爲此苦苦掙扎!你讓我今天一整天都感覺很好! – user1789344