2009-08-19 13 views
0

Ich möchte einen Index einer Combobox mit Zahlen im Text einer Textbox finden und sie dann entfernen. Die Elemente, die die Combobox ausfüllen, gehören zu einer Datenbank, daher verwende ich die Delete-Methode, um die Zeilen zu entfernen.Elemente in einer Combobox auswählen und entfernen

EDITED:

Ich habe gelesen, und der Findstring findet Text in der Artikelliste, nicht der Index. Gibt es denn eh den Text in der Textbox im Index der Combobox zu suchen?

Kann jemand das Problem mit diesem Code finden?

private void button4_Click(object sender, EventArgs e) 
    { 
     int buscar; 
     buscar = comboBox1.FindStringExact(tNumEditBox3.Text, 0); 

     comboBox1.SelectedIndex = buscar; 

     if (comboBox1.SelectedIndex >= 0 && radioButton1.Checked == true) 
     { 
       CambiosEnviosDataSet.CambioGRow borrarCambioGFila; 
       borrarCambioGFila = cambiosEnviosDataSet.CambioG.FindByCambioGID(Convert.ToInt16(tNumEditBox3.Text)); 

       borrarCambioGFila.Delete(); 

       this.cambioGTableAdapter.Update(this.cambiosEnviosDataSet.CambioG); 

       CambiosEnviosDataSet.CambioERow borrarCambioEFila; 
       borrarCambioEFila = cambiosEnviosDataSet.CambioE.FindByCambioEID(Convert.ToInt16(tNumEditBox3.Text)); 

       borrarCambioEFila.Delete(); 

       this.cambioETableAdapter.Update(this.cambiosEnviosDataSet.CambioE); 
     } 
     else if (comboBox2.SelectedIndex <= 0 && radioButton2.Checked == true) 
     { 
       CambiosEnviosDataSet.EnviosRow borrarEnvioFila; 
       borrarEnvioFila = cambiosEnviosDataSet.Envios.FindByEnvioID(Convert.ToInt16(tNumEditBox3.Text)); 

       borrarEnvioFila.Delete(); 

       this.enviosTableAdapter.Update(this.cambiosEnviosDataSet.Envios); 
     } 
     else 
     { 
      MessageBox.Show("The key you are using is not in the index"); 
     } 
    } 
+0

Diese Frage sehr schlecht formuliert ist. – SLaks

+0

Ich habe es verbessert. – SLaks

Antwort

0

Ein paar Dinge in den Sinn kommen.

Es ist entweder der Wert in tNumEditBox3.Text ist kein Wert in dem Kombinationsfeld vorhanden. Haben Sie doppelt geprüft es Wert ist vor dem Aufruf:

buscar = comboBox1.FindStringExact(tNumEditBox3.Text, 0); 

Die andere Alternative ist, dass radioButton2.Checkedfalse ist.

BTW Sie müssen nicht explizit einen booleschen Wert gegen true oder false testen. Sie können einfach schreiben:

if (boolean_value) 
{ 
    // Do stuff 
} 
0

Ihr Anruf zu FindStringExact wird das erste Element überspringen. Es sei denn, Sie wollen, dass es nur die Elemente nach der ersten Suche, sollten Sie die Überlastung verwenden, die keinen startIndex Parameter angenommen hat, wie folgt aus:

buscar = comboBox1.FindStringExact(tNumEditBox3.Text); 

Wenn das nicht Sie Problem, prüfen Sie, ob der Text in der Textbox entspricht genau einem der Elemente in der Combobox, und stellen Sie sicher, dass RadioButton1 aktiviert ist.

+0

Es ist überprüft, ich habe gelesen und der Suchstring findet Text in der Elementliste, nicht im Index. Gibt es denn eh den Text in der Textbox im Index der Combobox zu suchen? – Ricardo

0

Wie ich verstehe (korrigieren Sie mich, wenn ich falsch liege), hat Ihr Textfeld die ID eines Elements in der Combobox (zB 3).

Sie müssen den Artikel finden, die diese ID hat, stellen Sie dann die SelectedItem proeprty der Combobox, wie folgt aus:

comboBox1.SelectedItem = 
    cambiosEnviosDataSet.CambioG.FindByCambioGID(Convert.ToInt16(tNumEditBox3.Text)); 
+0

Ja, es hat ID und Element in der Combobox, ich habe versucht den Code, den Sie geschrieben haben, aber es hat nicht funktioniert. Ich habe auch mit SelectedValue versucht, aber es sagte, dass nicht konvertieren und Objekt vom Typ 'CambioGRow' zu 'System.IConvertible'. – Ricardo

Verwandte Themen