好的,我试图通过我的按钮在哈希表中显示多个值。但它不断向我展示第一个价值而不是其他价值。
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?
}
}
答案 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