komme mit der Methode FindIndex
-
Hallo zusammen,
ich habe ein Problem mit der Methode FindIndex.
Predicate<int> suchen = new Predicate<int>(klein); //steht überhaupt etwas im Suchfeld? if (textBox1.Text == string.Empty) { MessageBox.Show("Sie haben keinen Suchwert eigetragen!"); return; } if (radioButtonKleiner.Checked) { int ndx = liste.FindIndex(suchen); MessageBox.Show(Convert.ToString(ndx)); } private static bool klein(int zahl) { if (zahl < 100) { return true; } { return false; } }
Habe euch mal einen Auszug aus meinem Programm beigefügt.
Die Suche in meiner Listbox funktioniert im Augenblick so, dass mir der Index des ersten Eintrages der kleiner als 100 ist als Message ausgegeben wird.
Ich will nun aber dem Anwender eine Textbox anbieten, in die er den Suchwert eingeben kann und über einen Button die Suche ausführen lassen kann.
Dort beginnt mein Problem, wie kann ich der Methode klein sagen das der Vergleichswert nun nicht statisch 100 ist sonder dem textBox.Text, des Anwenders, entsprechen soll?
Kann ich dem Predikaten mehrere Parameter übergeben? Denn bei mir klappt das nicht.Habe auch schon versucht in der Methode klein eine neue TextBox text = new TextBox zu deklarieren um den eingegebenen Wert direkt in der Methode zur Verfügung zu haben -> klappt aber auch nicht.
Was mache ich falsch? Freue mich über jeden Ratschlag von euch.
-
Google mal nach "C# anonymous function" und "C# lambda expressions"
-
Wozu als Parameter ?
private bool klein(int zahl) { int wert; if(!int.TryParse(textBox1.Text, out wert)) { //Fehler } if (zahl < wert) { return true; } { return false; } }
Die Methode darf dann aber nicht mehr statisch sein.
-
Vielen Dank für die Hinweise. Weiß nicht warum aber war irgendwie der Meinung das die Methode des Predicaten static sein muss, aber geht auch so.
Jetzt geht es auf jeden Fall ohne Probleme.
Danke