Wie werden AutoComplete-Daten für eine TextBox asynchron abgerufen?

8

Unsere Anwendung WinForms lädt die Daten zum automatischen Vervollständigen einer Textbox langsam. Der Pseudocode dafür ist wie folgt;

  1. Benutzertypen in TextBox
  2. Wenn Sie eine Pause einlegen, bestimmen Sie, ob wir die Auto-Complete-Daten abrufen müssen
  3. Kontaktieren Sie den Server im Worker-Thread und rufen Sie die Daten ab
  4. Rufen Sie den UI-Thread
  5. auf
  6. textBox.AutoCompleteCustomSource = fetchedAutoCompleteStringCollection; setzen
  7. Erzwingen Sie, dass das Textfeld die Dropdown-Liste für die automatische Vervollständigung anzeigt.

Ich habe gerade Probleme mit # 6. Als Hack mache ich folgendes, um einen Tastendruck zu simulieren, der funktioniert, aber nicht in allen Situationen funktioniert.

%Vor%

Es muss einen besseren Weg geben. Ich kann nicht glauben, dass ich die einzige Person bin, die Autovervollständigendaten asynchron holt. Wie soll ich das machen?

BEARBEITEN: Ein Win32-Aufruf, der dazu führt, dass die Dropdown-Liste "Auto-Abschließen" aktiviert wird, ist akzeptabel. Es macht mir nichts aus, PInvozieren, wenn ich muss.

    
Rob Prouse 13.01.2009, 18:56
quelle

2 Antworten

5

Ich habe eine Async-Autocomplete-Klasse für eine TextBox geschrieben, die nur verwalteten Code verwendet. Hoffe es hilft.

%Vor%

Beispielimplementierung:

%Vor%

Wie man es benutzt:

%Vor%     
Daniel Peñalba 01.12.2011, 15:56
quelle
2

Normalerweise würden Sie COM-Interop verwenden und auf IAutoComplete , IAutoComplete2 oder IAutoCompleteDropDown Schnittstelle. Leider hat keine dieser Methoden Methoden, um die automatische Vervollständigung zu unterdrücken.

Vielleicht möchten Sie Spy ++ verwenden und sich die Windows-Meldungen ansehen, die an das Steuerelement gesendet werden, wenn die automatische Vervollständigung angezeigt wird. Sie könnten eine Befehlsnachricht finden, die es aktiviert. Natürlich ist dies ein Implementierungsdetail, aber es könnte der einzige Weg sein, hier zu gehen.

    
casperOne 13.01.2009 21:10
quelle

Tags und Links