2015-02-17 20 views
21

Ho creato un dizionario che contiene due valori un DateTime e una stringa. Ora voglio stampare tutto dal dizionario in una casella di testo. Qualcuno sa come fare questo. Ho usato questo codice per stampare il dizionario per la console:C# - Dizionario di stampa

private void button1_Click(object sender, EventArgs e) 
{ 
    Dictionary<DateTime, string> dictionary = new Dictionary<DateTime, string>(); 
    dictionary.Add(monthCalendar1.SelectionStart, textBox1.Text); 

    foreach (KeyValuePair<DateTime, string> kvp in dictionary) 
    { 
     //textBox3.Text += ("Key = {0}, Value = {1}", kvp.Key, kvp.Value); 
     Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value); 
    } 
} 
+1

che dire della linea hai commentato? –

+0

Ciò fornisce il seguente errore: Solo assunzioni, chiamate, incrementi, attese e nuove espressioni oggetto possono essere utilizzate come una dichiarazione. –

+6

Penso che manchi semplicemente un 'string.Format' nella riga commentata. – petelids

risposta

32

Giusto per chiudere questa

foreach (KeyValuePair<DateTime, string> kvp in dictionary) 
{ 
    //textBox3.Text += ("Key = {0}, Value = {1}", kvp.Key, kvp.Value); 
    Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value); 
} 

Modifiche a questa

foreach (KeyValuePair<DateTime, string> kvp in dictionary) 
{ 
    //textBox3.Text += ("Key = {0}, Value = {1}", kvp.Key, kvp.Value); 
    textBox3.Text += string.Format("Key = {0}, Value = {1}", kvp.Key, kvp.Value); 
} 
19

Altro modo più pulito utilizzando LINQ

var lines = dictionary.Select(kvp => kvp.Key + ": " + kvp.Value.ToString()); 
textBox3.Text = string.Join(Environment.NewLine, lines); 
+1

Per curiosità, cosa significa 'p' all'interno di' kvp'? –

+3

So che questo è vecchio pazzo, ma significa Coppia. :) – jtsmith1287

+2

Chiave, Valore e ** Coppia **. –