Elemente im Kombinationsfeld werden nicht während der Eingabe der ersten Zeichen

Problembeschreibung

Sie die DropDownStyle -Eigenschaft des ComboBox -Steuerelements auf DropDownList, und geben Sie die ersten Zeichen des Elements in der ComboBox während der Laufzeit. Das im Kombinationsfeld ausgewählte Element entspricht nicht die Zeichen, die Sie eingeben. Im Kombinationsfeld ausgewählten Element basiert auf das letzte Zeichen, die Sie eingeben. Zum Beispiel sind die Elemente im Kombinationsfeld Rot, Eicheund stieg, Eingabe Ro ComboBox, der Schwerpunkt liegt auf Eiche statt stieg.

Ursache

Dieses Problem tritt auf, weil ein Zeichen statt der vollständigen Zeichensatz ComboBox Suche basiert.

PROBLEMUMGEHUNG

Um dieses Problem zu umgehen, fügen Sie Code, der mit allen Zeichen sucht, die in das Kombinationsfeldeingeben. Der Code muss auch das Element auswählen, das alle Zeichen entspricht. Um den Suchtext in regelmäßigen Abständen zu löschen, verwenden Sie ein Timer -Steuerelement. Gehen Sie hierzu folgendermaßen vor:
  1. Erstellen Sie in Microsoft Visual Studio .NET oder Microsoft Visual Studio 2005 eine neue Windows-Anwendung mithilfe von Visual Basic .NET, Visual Basic 2005 oder Visual C# .NET.

    Standardmäßig wird Form1 erstellt.
  2. Ziehen Sie aus der Toolbox ein Timer auf Form1.
  3. Legen Sie im Eigenschaftenfenster die Enabled-Eigenschaft auf True.
  4. Variablendeklaration Codeabschnitt Folgendes hinzufügen:

    Visual Basic .NET oder Visual Basic 2005
    Dim searchstr As String
    Visual C# .NET
    string searchstr;
  5. Das Load -Ereignis von Form1 den folgenden Code hinzufügen:

    Visual Basic .NET oder Visual Basic 2005
    'set the timer interval and start the timerTimer1.Interval = 1000
    Timer1.Start()
    Visual C# .NET
    //set the interval  and start the timertimer1.Interval =1000;
    timer1.Start();
  6. Das Tick -Ereignis der Timer1folgenden Code hinzufügen:

    Visual Basic .NET oder Visual Basic 2005
    'empty the string for every 1 secondssearchstr = ""
    Visual C# .NET
    //empty the string for every 1 secondssearchstr="";
  7. Das KeyUp -Ereignis ComboBox1den folgenden Code hinzufügen:

    Visual Basic .NET oder Visual Basic 2005
          searchstr = searchstr & Chr(e.KeyValue)      ' If the Search string is greater than 1 then use custom logic
    If searchstr.Length > 1 Then
    Dim index As Integer
    ' Search the Item that matches the string typed
    index = ComboBox1.FindString(searchstr)
    ' Select the Item in the Combo
    ComboBox1.SelectedIndex = index
    End If
    Visual C# .NET
             searchstr = searchstr + Convert.ToChar(e.KeyCode);         // If the Search string is greater than 1 then use custom logic
    if (searchstr.Length > 1)
    {
    int index;
    // Search the Item that matches the string typed
    index=comboBox1.FindString(searchstr);
    // Select the Item in the Combo
    comboBox1.SelectedIndex=index;
    }

Status

Dieses Verhalten ist entwurfsbedingt.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Erstellen Sie in Microsoft Visual Studio .NET oder Microsoft Visual Studio 2005 eine neue Windows-Anwendung mithilfe von Visual Basic .NET, Visual Basic 2005 oder Visual C# .NET.

    Standardmäßig wird Form1 erstellt. Hinweis Ändern Sie den Code in Visual Basic 2005. Standardmäßig erstellt Visual Basic zwei Dateien für das Projekt beim Erstellen von Windows Forms-Projekt. Wenn das Formular Form1 heißt, werden die beiden Dateien, die das Formular darstellen Form1.vb und Form1.Designer.vb genannt. Sie schreiben den Code in der Datei Form1.vb. Windows Forms-Designer schreibt den Code in der Datei Form1.Designer.vb. Windows Forms-Designer verwendet partielle Schlüsselwort, um die Implementierung von Form1 in zwei separate Dateien aufzuteilen. Dieses Verhalten verhindert, dass der vom Designer generierte Code mit Ihrem Code vermischt wird.

    Weitere Informationen über die neuen Funktionen von Visual Basic 2005 Sprache finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:

    Weitere Informationen zu partiellen Klassen und Windows Forms-Designer finden Sie auf der folgenden MSDN-Website:

  2. Ziehen Sie aus der Toolbox in Form1 ComboBox .
  3. ComboBox1Maustaste, und klicken Sie dann auf
    Eigenschaften.
  4. Im Fenster Eigenschaften klicken
    DropDownStyle, und legen Sie die Eigenschaft auf
    DropDownList.
  5. Im Fenster Eigenschaften klicken
    Elemente, und klicken Sie dann auf die Schaltfläche mit den Auslassungspunkten (...).
  6. Geben Sie im Zeichenfolgen-Editor
    Rot, Eicheund
    um Zeilen und dann auf
    OK.
  7. Klicken Sie im Menü Debuggen auf
    Starten Sie die Anwendung.
  8. Ro ComboBox1geben.

Referenzen

Weitere Informationen finden Sie auf der folgenden MSDN-Website:

ComboBox.DropDownStyle-Eigenschaft
http://msdn2.microsoft.com/en-us/library/system.windows.forms.combobox.dropdownstyle(vs.71).aspx
Eigenschaften

Artikelnummer: 814362 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Feedback