2017-03-22 1 views
-1

Ich möchte True erhalten, wenn combobox1.text mit seinen Listenelementen übereinstimmt und dann weiter funktioniert. aber wenn nicht die Warnmeldung an Benutzer .. Bisher habe ich versuchtWie true, wenn combobox.text mit seinen Listenelementen übereinstimmen

 bool itemExists = false; 
    foreach (object obj in comboBox1.Items) 
    { 
     itemExists = obj.Equals(comboBox1.Text); 
     if (itemExists) 
     { 
      itemExists = true; 
     } 
     break; 

    } 

    if (itemExists) 
    { 
     MessageBox.Show("good00"); 
    } 
    else 
    { 
     MessageBox.Show("sorry no value"); 
    } 
} 

und auch

bool test ; 
    test = comboBox1.Items.OfType<object>().Any(cbi => cbi.Equals(comboBox1.Text)); 

    if (test) 
    { 
     MessageBox.Show("values matched"); 
    } 

    else 
    { 
     MessageBox.Show("not matched"); 
    } 

aber ich immer bin nicht, was soll i .. es sollte so funktionieren, überprüft er die combobox .text mit seiner Liste, wenn eine Übereinstimmung dann true zurückgibt und dass echte Werte weiter verwendet werden. wenn sie keine Übereinstimmung zurückgeben falsch und dass falsch verwendete Fehlermeldung senden ..

jede Anregung ..

Dank ..

Antwort

1

Diese Aussage macht nichts:

if (itemExists) 
{ 
    itemExists = true; 
} 

Die break gleich danach ist unbedingte. Bewegen sie im Inneren des if Zustand wird das Problem beheben:

if (itemExists) 
{ 
    break; 
} 

Ihr zweiter Ansatz sollte für Objekte vom Typ string unmodifizierten arbeiten. Um es zu ändern mit Objekten aller Art zu arbeiten, verwenden

test = comboBox1 
    .Items.OfType<object>() 
    .Any(cbi => cbi.ToString() == comboBox1.Text); 

Nachricht nur angezeigt wird, wenn es keine Übereinstimmung Verwendung ist

if (!itemExists) 
{ 
    MessageBox.Show("sorry no value"); 
} 
+0

danke, aber wie Nachricht angezeigt werden, wenn sie nicht angepassten Wert. – speedyraz

+0

Ich habe meine Frage aktualisiert, für das, was ich brauchte – speedyraz

+0

@speedryraz Ich verstehe nicht die Bedeutung des Absatzes, den Sie in der Bearbeitung hinzugefügt: Ihre Methode gibt nichts zurück; Sie können nicht "zurückgeben und dann den Wert verwenden", denn sobald Sie zurückkehren, haben Sie keine Methode mehr. Wenn Sie auf no-match beenden möchten, setzen Sie 'return;' in den bedingten Aufruf nach 'MessageBox.Show'. – dasblinkenlight

Verwandte Themen