Filter-Listenfeld mit dem Textfeld, in Echtzeit

Ich versuche zu filtern, eine listbox mit text aus einer textbox in Echtzeit.

Hier ist der code:

private void SrchBox_TextChanged_1(object sender, EventArgs e)
{
  var registrationsList = registrationListBox.Items.Cast<String>().ToList();
  registrationListBox.BeginUpdate();
  registrationListBox.Items.Clear();
  foreach (string str in registrationsList)
  {
    if (str.Contains(SrchBox.Text))
    {
      registrationListBox.Items.Add(str);
    }
  }
  registrationListBox.EndUpdate();
}

Hier sind die Themen:

  1. Wenn ich das Programm starte bekomme ich diesen Fehler: Object reference not set to an instance of an object

  2. Wenn ich auf backspace, meine ursprüngliche Liste wird nicht angezeigt mehr. Dies ist, weil meine aktuelle Liste von items ist jetzt reduziert, aber wie kann ich das erreichen?

Können Sie zeigen mich in die richtige Richtung?

haben Sie versucht, mit (!IsPostBack) Prüfung, ob es nicht nach hinten
Müssen Sie bewahren den Inhalt des Listenfeldes in einem separaten List<string> so dass Elemente.Clear () - don ' T lassen Sie Sie mit einer leeren Liste. Die NRE ist nicht so offensichtlich. Umwandlung in string nicht unbedingt funktionieren, wenn die ursprünglichen Elemente sind keine Zeichenfolgen. Verwenden Sie immer die ToString().
Ziemlich sicher, dass dies eine WinForms-Frage...
Johnson mögen Sie Recht haben
Ja ist eine Winform

InformationsquelleAutor observ | 2012-04-02

Schreibe einen Kommentar