2016-08-03 10 views
0

Grundsätzlich habe ich zwei Kategorien:Wie man Daten von ComboBox2 speichern und in ComboBox2 abrufen, indem Sie eine Bedingung in comboBox1 Auswahl

Kategorie - A
Kategorie - B

Ich werde wählen Sie Kategorie - A und Nummer erzeugen Serien von 1 bis 10. Anzeige in Combobox 2 und speichern Sie es.

Ich wähle dann Kategorie B und erzeuge Nummerserien von 1 bis 10, Anzeige in Combobox 2 und speichere sie.

Wenn ich die Anwendung schließe und öffne, möchte ich nur die Serien sehen, die in Kategorie A in ComboBox2 generiert wurden.

Ich habe versucht, es zu tun, indem Sie eine Datagridview hinzufügen, aber es führt beide Kategorieserien zusammen. Screenshot

Kategorie - A -> Serials {1,2,3,4,5,6,7,8,9,10}
Kategorie - B -> Serials {11,12,13,14,15,16,17,18}.

Wenn ich also Kategorie A wähle, möchte ich nur A-Serien in ComboBox2 und sonst nichts sehen.

Wenn ich Kategorie B wähle, möchte ich nur B-Serien in ComboBox2 und sonst nichts sehen.

private void GenSerialBookButton_Click(object sender, EventArgs e) 
    { 

     if (comboBox1.SelectedIndex == 0) 
     { 

      from = int.Parse(textBox2.Text); 
      to = int.Parse(textBox3.Text); 

      result = to - from; 

      for (int i = 0; i <= result; i++) 
      { 
       comboBox2.Items.Add(from + i); 

       this.SerialBookDataBaseBindingSource.AddNew(); 
       dataGridView1.Rows[i].Cells[1].Value = from + i; 

       } 
      MessageBox.Show("Serial Book Generated Success", "Success"); 
      } 

     if (comboBox1.SelectedIndex == 1) 
     { 

      from = int.Parse(textBox2.Text); 
      to = int.Parse(textBox3.Text); 

      result = to - from; 

      for (int i = 0; i <= result; i++) 
      { 

       comboBox2.Items.Add(from + i); 
       this.SerialBookDataBaseBindingSource.AddNew(); 

       dataGridView1.Rows[i].Cells[1].Value = from + i; 
      } 

      MessageBox.Show("Serial Book Generated Success", "Success"); 

     } 


    } 


    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
    // Clear previous list 
    a: if (comboBox2.Items.Count > 0) 
     { 
      comboBox2.Items.RemoveAt(0); 
      goto a; 
     } 


     if (comboBox1.SelectedIndex == 0) 
     { 

      comboBox2.Items.Clear(); 
      foreach (DataGridViewRow row in dataGridView1.Rows) 
      { 
       for (int i = 0; i < dataGridView1.Rows.Count; i++) 
       { 
        comboBox2.Items.Add(row.Cells[1].Value); 
        MessageBox.Show("Adding: " + (row.Cells[1].Value.ToString())); 
        comboBox2.Refresh(); 
       } 

      } 

      if (comboBox1.SelectedIndex == 1) 
      { 

       comboBox2.Items.Clear(); 
       foreach (DataGridViewRow row in dataGridView1.Rows) 
       { 
        for (int i = 0; i < dataGridView1.Rows.Count; i++) 
        { 
         comboBox2.Items.Add(row.Cells[1].Value); 
         MessageBox.Show("Adding: " + (row.Cells[1].Value.ToString())); 
         comboBox2.Refresh(); 
        } 

       } 

      } 


     } 
    } 
+0

Also, wenn Sie wollen Anwendung schließen und wieder zu öffnen, da werden keine Daten sein. Sie müssen eine Quelle zum Speichern von Daten verwenden. (DBMS, TextFile, XML oder etwas anderes.) – Berkay

+0

Wenn ich den Index von ComboBox 1 ändere, bearbeite ich gespeicherte Daten neu, wenn die Anwendung läuft. Ich speichere derzeit keine Daten in meinem Code, ich kann das tun, aber das ist nicht das Problem, Problem ist, dass ich nur Kategorie A-Serien anzeigen möchte, wenn Kategorie A ausgewählt ist, und Kategorie B-Serien bei Kategorie B-Serien sind ausgewählt. In diesem Code, ich speichere alle Kategorie A und B Serien zusammen, ich kann nicht scheinen, herauszufinden, wie diese Liste der Serien in Kategorie A speichern und zurück zugreifen. – Patrick

+0

Tag mit 'winforms' oder' wpf' für zukünftige Referenzen bitte. – Kilazur

Antwort

2

Hier ist eine kurze Probe für Sie;

Ich habe versucht, ein Formular setzen wie Sie (nicht Textfelder müssen entscheiden, „nach und von“ ich es mir direkt gab)

Hier ist der Trick, ich definiert es auf globaler,

List<KeyValuePair<int, string>> vals = new List<KeyValuePair<int, string>>(); 

In Formload ich hinzufügen 2 string Kategorien,

private void Form1_Load(object sender, EventArgs e) 
    { 
     comboBox1.Items.Add("CategoryA"); 
     comboBox1.Items.Add("CategoryB"); 
    } 

Und ich habe eine Schaltfläche Serien erzeugen

private void button1_Click(object sender, EventArgs e) 
{ 
     if (comboBox1.SelectedIndex == 0) 
      { 


       for (int i = 0; i <= 10; i++) 
       { 
        string item = i + "A"; // Given"A" to seperate from each other 
        comboBox2.Items.Add(item); 
        vals.Add(new KeyValuePair<int, string>(0, item)); // CatA has 0 key value 

       } 

       MessageBox.Show("Serial Book Generated Success", "Success"); 
      } 

      if (comboBox1.SelectedIndex == 1) 
      { 


       for (int i = 0; i <= 5; i++) 
       { 
        string item = i + "B"; // Given "B" to seperate from each other 
        comboBox2.Items.Add(item); 
        vals.Add(new KeyValuePair<int, string>(1, item)); // CatB has 1 key value 
       } 

       MessageBox.Show("Serial Book Generated Success", "Success"); 

      } 
} 

Und SelectedIndexChanged-Ereignis des combobox, (Kategorie der Combobox)

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      if (comboBox1.SelectedIndex == 0) 
      { 

       comboBox2.Items.Clear(); 
       foreach (var item in vals) 
       { 
        if (item.Key == 0) //If Key value is 0, if it is CategoryA 
        { 
         comboBox2.Items.Add(item.Value); 
         // MessageBox.Show("Adding: " + (item.Value.ToString())); 
         comboBox2.Refresh(); 
        } 
       } 

      } 

      if (comboBox1.SelectedIndex == 1) 
      { 

       comboBox2.Items.Clear(); 
       foreach (var item in vals) 
       { 
        if (item.Key == 1) //If Key value is 1, if it is CategoryB 
        { 

         comboBox2.Items.Add(item.Value); 
         //MessageBox.Show("Adding: " + (item.Value.ToString())); 
         comboBox2.Refresh(); 
        } 
       } 
      } 


     } 

Ausgänge,

outputs Hoffnung hilft,

+0

das sieht sehr vielversprechend aus! ... Ich werde es versuchen und es euch wissen lassen! – Patrick

+0

@Patrick Hoffnung hilft Mann, ich aktualisierte die Antwort. Überprüfen Sie die Ausgänge. – Berkay

+0

Bearbeitet: Das funktioniert !, Ich hatte ein "}" verpasst Ich möchte nur wissen, wie kann ich jetzt Kategorie A-Werte in der Datenbank speichern? Es ist also keine Laufzeit mehr ... Danke, Mann! – Patrick