将两个listBox与层次结构作为源进行分层链接

时间:2016-05-19 16:47:15

标签: c# winforms dictionary listbox

我希望我能解释清楚:))

我有.txt文件,我在文件夹中加载到程序中。我处理文件中的数据并将其放入列表中,然后将列表放在一个代表一个.txt文件的字典中。然后我将这些词典放在另一个代表该文件夹的字典中。一切都有自己的钥匙。

然后我有两个列表框和一个文本框。第一个从“主”字典加载键。

问题:当我点击列表框项目时,我想在第二个列表框上显示主词典的值。当我点击第二个列表框时,我希望文本框显示与辅助字典值对应的数据。

主词典看起来像:

glavniKodeks <string, Dictionary<string, List(Entry>>>

辅助字典看起来像:

kodeks<string>, List<Entry>>.

Entry是一个创建数据并将数据放入列表的类。

 listBox1.DataSource = new BindingSource(glavniKodeks.Keys, null);
 listBox1.DisplayMember = "Key";

    public void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
      // (when i click on the items in the listbox1, the values from
      // the master dictionary, which are the keys of a secondary
      // dictionary, should display on the second listbox2)
    }

    private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
      // (when I click on the items selected here, the secondary's 
      //  dictionary values should be extracted from the dictionary into
      //  a array, which I can  manipulate further with.)
    }

这样的事情甚至可能吗?我一直在用类似的解决方案搜索网,但一直无法解决问题。

1 个答案:

答案 0 :(得分:1)

搞砸了代码,发现了这个:)

public void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {  
        var odabrano1 = glavniKodeks.Keys.ToList()[listBox1.SelectedIndex];
        glavniKodeks.TryGetValue(odabrano1, out kodeks);
        listBox2.DataSource = new BindingSource(kodeks.Keys, null);
    }

    private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        var list = new List<Entry>();
        var odabrano2 = kodeks.Keys.ToList()[listBox2.SelectedIndex];
        kodeks.TryGetValue(odabrano2, out list);
    }

现在我有一个提取的列表列表,我可以操作:)