2014-09-12 3 views
0

Итак, я пытаюсь отобразить несколько значений в хэш-таблице через мою кнопку. Но он продолжает показывать мне первое значение, но не другие.Показать все значения 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? 
     } 
    } 

ответ

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)) 
    ); 
} 
+0

Вы также должны были бы пустой текст вне цикла. – Sign

+0

или назначить локальную переменную за пределами цикла и использовать перегрузку '+ =' оператора, а затем назначить ее меток4.Text – MethodMan

+0

label4.Text + = "" + DE.Key + DE.Value работает, но повторяет второе значение дважды. Как я могу это остановить? – djinc

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

+0

Это дает сообщение об ошибке «Невозможно преобразовать строку типа в System.Text.StringBuilder – djinc

Смежные вопросы