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

本文关键字:错误 combobox2 信息 上载 文件夹 | 更新日期: 2023-09-27 18:26:19

我正试图从目录将文件夹上传到comboBox 1,然后从comboBox1到comboBox2进行选择。

我有下面的代码,当我从组合框1中选择时,我会出错

无法将system.string类型的对象强制转换为系统。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;  
            }   
}

//我在下面的部分出错,因为我缺少转换的关键部分。

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);
         }
  }

我需要这方面的帮助,我们非常感谢所有的帮助和建议。

谢谢。

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

您可以这样做:

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

其中ComboBoxItem定义为:

public class ComboBoxItem
        {
            public string Text { get; set; }
            public object Value { get; set; }
            public override string ToString()
            {
                return Text;
            }
        }

以便您可以使用检索所选值

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

因此,您的第二个循环将如下所示:

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