通过按钮显示Hashtable的所有值

时间:2014-09-12 16:27:32

标签: c# winforms hashtable

好的,我试图通过我的按钮在哈希表中显示多个值。但它不断向我展示第一个价值而不是其他价值。

    public Form1()
    {
        InitializeComponent();
    }
    Hashtable Info = new Hashtable();

    private void button1_Click(object sender, EventArgs e)
    {
        string a = textBox1.Text;
        string b = textBox2.Text;
        Info.Add(a,b);
       label4.Text = a + " " + b;
    }

    private void button3_Click(object sender, EventArgs e)
    {
        foreach (DictionaryEntry DE in Info)
        {
            label4.Text = ""+ DE.Key +DE.Value; //this only shows the first added value. How do I show the remaining values?
        }
    }

2 个答案:

答案 0 :(得分:4)

这是因为循环的每次迭代都会替换文本中的前一个值。您可以通过在进入循环之前清除文本并使用+=代替=来解决此问题:

label4.Text += " "+ DE.Key +DE.Value

更好的方法是使用string.Join

private void button3_Click(object sender, EventArgs e) {
    label4.Text = string.Join(
        ", "
    ,   Info.Select(p => string.Format("{0}-{1}", p.Key, p.Value))
    );
}

答案 1 :(得分:1)

我建议你不要继续在循环中更改label4.Text,但是在循环中构建一个字符串并在结尾处更改一次。类似的东西:

        StringBuilder allEntries = new StringBuilder();
        foreach (DictionaryEntry DE in Info)
        {
            allEntries.Append(DE.Key);
            allEntries.Append(DE.Value);
        }
        label4.Text = allEntries.ToString();

[我编辑了一个未编译的代码的早期版本。]

KC