none
ComboBox füllen und Abfragen RRS feed

  • 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

     

    Mittwoch, 8. September 2010 12:20

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

    Mittwoch, 8. September 2010 15:25

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

    Mittwoch, 8. September 2010 15:25
  • 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

    Donnerstag, 9. September 2010 07:26
  • 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

    Donnerstag, 9. September 2010 09:52
  • Hallo Robert,

    das nur der Text kommen soll hast Du absolut richtig verstanden, ich habe nur nicht verstanden wie Du die Zahl unterdrückt hast.

    Aber der Link ist hilfreich zum Verstehen.

    Danke.

    Gruß Roland

    Donnerstag, 9. September 2010 10:47
  • 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

    Donnerstag, 9. September 2010 11:01