Benutzer mit den meisten Antworten
ComboBox füllen und Abfragen

Frage
-
Hi Forum,
ich möchte eine ComboBox wie folgt zur Datenauswahl benutzen. Dabei habe ich eine Zuordnung der benutzten Daten
ASCII = 9999, Excel = 8888, DB = 7777, . . .
Ich möchte nun den Text ASCII, Excel, DB ... in der ComboBox zur Auswahl darstellen.
Der Rückgabewert bei einer Auswahl soll aber die Zahl sein.
Die Daten können z.B. in einem Array sein, oder auch fest in der ComboBox hinterlegt sein.
Wie geht das ?
Gruß Roland
Antworten
-
Hallo Roland DE,
Schau Dir mal folgenden Code an. Vielleicht kann er Dir weiterhelfen.
using System; using System.Text; using System.Windows.Forms; using System.Collections.Generic; namespace WindowsFormsApplication1 { public partial class Form1 : Form { Dictionary<string, string> data; public Form1() { InitializeComponent(); data = new Dictionary<string, string>(); data.Add("9999", "ASCII"); data.Add("8888", "Excel"); data.Add("7777", "DB"); BindingSource myBindingSource = new BindingSource(); myBindingSource.DataSource = data; comboBox1.DataSource = myBindingSource; comboBox1.DisplayMember = "Value"; comboBox1.ValueMember = "Key"; } private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e) { KeyValuePair<string, string> selob =(KeyValuePair<string, string>)comboBox1.SelectedItem; string selKey = selob.Key; //string selvalue = selob.Value; MessageBox.Show(selKey); //MessageBox.Show(selvalue); } } }
Grüße,
Robert
- Als Antwort markiert Robert Breitenhofer Freitag, 10. September 2010 16:56
Alle Antworten
-
Hallo Roland DE,
Schau Dir mal folgenden Code an. Vielleicht kann er Dir weiterhelfen.
using System; using System.Text; using System.Windows.Forms; using System.Collections.Generic; namespace WindowsFormsApplication1 { public partial class Form1 : Form { Dictionary<string, string> data; public Form1() { InitializeComponent(); data = new Dictionary<string, string>(); data.Add("9999", "ASCII"); data.Add("8888", "Excel"); data.Add("7777", "DB"); BindingSource myBindingSource = new BindingSource(); myBindingSource.DataSource = data; comboBox1.DataSource = myBindingSource; comboBox1.DisplayMember = "Value"; comboBox1.ValueMember = "Key"; } private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e) { KeyValuePair<string, string> selob =(KeyValuePair<string, string>)comboBox1.SelectedItem; string selKey = selob.Key; //string selvalue = selob.Value; MessageBox.Show(selKey); //MessageBox.Show(selvalue); } } }
Grüße,
Robert
- Als Antwort markiert Robert Breitenhofer Freitag, 10. September 2010 16:56
-
Hallo Robert,
Danke das war der Ansatz. Was ich aber noch nicht ganz verstehe ist warum nur der Text und nicht auch die Zahl erscheint.
Wenn man die "Value" und "Key" Einstellung weg läst kommt [9999,ASCII] wie hängt das zusammen ?
Gruß Roland
-
Ich möchte nun den Text ASCII, Excel, DB ... in der ComboBox zur Auswahl darstellen.
Der Rückgabewert bei einer Auswahl soll aber die Zahl sein.
Hallo Roland DE,
Damit ich das besser verstehe: Du möchtest in der ComboBox nur den Text darstellen, richtig?
Was willst du dann sagen mit: „warum nur der Text und nicht auch die Zahl erscheint.“? Weil Du hast gesagt à „Der Rückgabewert bei einer Auswahl soll aber die Zahl sein.“ Oder meinst Du der Rückgabewert soll nicht string sondern int sein? Wenn so dann änder den ganzen Code für Dictionary<int, string> data; um.
Lies mal auch die Theorie rund um Dictionary<(Of <(TKey, TValue>)>)-Klasse.
Grüße,
Robert
-
Hallo Roland DE,
das nur der Text kommen soll hast Du absolut richtig verstanden, ich habe nur nicht verstanden wie Du die Zahl unterdrückt hast.
Besser als hier kann ich es nicht erklären J
What are the DisplayMember and ValueMember?
Grüße,
Robert