-1

私のファイルを含むツリービューをwpfアプリに表示させようとしています。ドライブ情報をディレクトリ情報に正しく入れることができません:

            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=真

4

1 に答える 1

0

準備ができていないドライブにアクセスしようとしています。たとえば、メディアが挿入されていないCD/DVDドライブです。:にアクセスする前IsReadyに、クラスのプロパティを確認する必要があります。DriveInfoRootDirectory

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
      });
   }
}
于 2012-11-12T18:48:31.980 に答える