我如何从列表框中的对象中选择值?

时间:2015-01-10 17:19:46

标签: c# winforms object listbox

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()

谢谢!

1 个答案:

答案 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";
    }