[英]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.