简体   繁体   English

尝试将目录文件夹上载到combobox2时出现目录信息错误

[英]Directory Info error while trying to upload directory folders to combobox2

I am trying to upload folders to comboBox 1 from the directory, and then at selection from comboBox 1 to comboBox2. 我试图将文件夹从目录上载到comboBox 1,然后从comboBox 1选到comboBox2。

I have below code, I am getting error when I make selection from comboBox1 as 我有下面的代码,当我从comboBox1进行选择时出现错误

Unable to cast object of the type system.string to system.Io.DirectoryInfo 无法将类型为system.string的对象转换为system.Io.DirectoryInfo

 private void Form_Load(object sender, EventArgs e)
 {
            DirectoryInfo di = new DirectoryInfo(@"\\Path\CAMR");
            paths = new String[di.GetDirectories().Count()];
            int i = 0;
            foreach (DirectoryInfo fi in di.GetDirectories())
            {
                comboBox1.Items.Add(fi.Name);
            }
            foreach (DirectoryInfo fi in di.GetDirectories())
            {
                paths[i] = fi.FullName;  
            }   
}

// I am getting error in the part below, as I am missing key part for conversion. //我在下面的部分中遇到错误,因为我缺少转换的关键部分。

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
         comboBox3.Items.Clear();
         //string dinf01 = comboBox2.SelectedItem.ToString();
         DirectoryInfo dir = (DirectoryInfo)comboBox2.SelectedItem;
         foreach (FileInfo fi in dir.GetFiles())
         {
             comboBox3.Items.Add(fi);
         }
  }

I need help with this part, all help and advise is appreciated. 我需要这部分的帮助,感谢所有帮助和建议。

Thanks. 谢谢。

You can do something like this: 您可以执行以下操作:

 foreach (DirectoryInfo fi in di.GetDirectories())
     {
       ComboBoxItem item = new ComboBoxItem();
       item.Text = fi.Name;
       item.Value = fi.FullName; 
       comboBox1.Items.Add(item);
    }

Where ComboBoxItem is defined as : 其中ComboBoxItem定义为:

public class ComboBoxItem
        {
            public string Text { get; set; }
            public object Value { get; set; }

            public override string ToString()
            {
                return Text;
            }
        }

So that you can retrieve the selected value using 这样您就可以使用

comboBox1.SelectedItem as ComboboxItem).Value.ToString();

Hence your second loop will be like the following: 因此,您的第二个循环将如下所示:

     DirectoryInfo dir = new DirectoryInfo(comboBox1.SelectedItem as ComboboxItem).Value.ToString());
     foreach (FileInfo fi in dir.GetFiles())
     {
         comboBox3.Items.Add(fi);
     }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM