Here is the list item Class:
class ListItem
{
public string Key;
public string Value;
public ListItem()
{
}
public string key
{
get { return Key; }
set { key = value; }
}
public string value
{
get { return Value; }
set { Value = value; }
}
public override string ToString()
{
return Key;
}
public string getvalue(string blabla)
{
return Value;
}
}
private void btnOpen_Click(object sender, EventArgs e)
{
string[] Folders = Directory.GetDirectories(txtFolder.Text);
foreach (string f in Folders)
{
ListItem n = new ListItem();
n.Value = f;
n.Key = Path.GetFileName(f);
listBoxSidra.Items.Add(n);
}
}
private void listBoxSidra_SelectedIndexChanged_1(object sender, EventArgs e)
{
try
{
lblmsg.Text = null;
comboBoxSeason.Items.Clear();
string[] seasons = Directory.GetDirectories(listBoxSidra.SelectedValue.ToString());
for (int i = 0; i < seasons.Length; i++)
{
comboBoxSeason.Items.Add(seasons[i]);
}
comboBoxSeason.SelectedIndex = 0;
}
catch (Exception ex)
{
lblmsg.Text = ex.Message;
}
}
第一种方法:我打开名为ListItem
的类,它包含foldername(键)和文件夹位置(值)。
Secound方法:我创建了一个数组,其中包含我在文本框中设置的目录中的所有子目录。
我还创建了ListItem
对象,命名为&#39; n&#39; ,然后我将值设置为&#39; n&#39; ,n.Value(代表目录位置)和n.Key(代表目录名称)。
下一步是添加&#39; n&#39;对象到列表框,现在在列表框中我可以看到目录名称,每个对象都包含他的位置。
Thrid方法:那就是我卡住了,我创建了一个数组,数组支持包含所选列表框项目的子目录,我的意思是,当我点击一个列表框项目时我想得到他的值(值表示位置)并通过添加子目录到数组,我应该写什么而不是listBoxSidra.SelectedValue.ToString()
?
谢谢!
答案 0 :(得分:2)
为了使您的代码能够进行以下更改
private void btnOpen_Click(object sender, EventArgs e)
{
string[] Folders = Directory.GetDirectories(txtFolder.Text);
var dataSource = new List<ListItem>();
foreach (string f in Folders)
{
ListItem n = new ListItem();
n.Value = f;
n.Key = Path.GetFileName(f);
dataSource.Add(n);
}
listBoxSidra.DataSource = dataSource;
listBoxSidra.DisplayMember = "key";
listBoxSidra.ValueMember = "value";
}