2009-06-03 8 views
3

Ich habe eine Anwendung mit vielen TextBox Steuerelemente, die Autocomplete verwenden. Jeder verwendet AutoCompleteMode.CustomSource, um den Autocomplete-Text von einem zugeordneten AutoCompleteStringCollection abzurufen.Wie mache ich die Autocomplete-Liste für eine TextBox editierbar?

Wenn der Benutzer einen neuen Wert in TextBox eingibt, wird er zum zugehörigen AutoCompleteStringCollection hinzugefügt, und am Ende der Sitzung werden alle diese Sammlungen in einer Datei im Basisverzeichnis des Benutzers gespeichert.

Das Problem ist, dass es keine Möglichkeit gibt, Fehler in diesen Sammlungen zu korrigieren. In IE können Sie mit Eingabesteuerelementen mit Autovervollständigungssteuerelementen zu einem Element in der Liste der automatischen Vervollständigungen blättern und Del drücken, um es zu entfernen. Das funktioniert nicht in den .NET-Steuerelementen.

Ich möchte wirklich vermeiden, meine eigene UI dafür zu implementieren. Bin ich fest? Gibt es eine Möglichkeit, dies zu ermöglichen, die ich nicht sehe?

+0

Verzeihen Sie meine Naivität, aber wie bekommen Sie die Vorschläge? Meine einzige Erfahrung bei der Entwicklung einer Autocomplete ist das ASP.NET AJAX-Toolkit, und da diese Komponente Vorschläge von einem Webservice bekommt, denke ich, dass es keine Möglichkeit gibt, sie zu bearbeiten. Aber natürlich könnte ich falsch liegen. –

+0

Er verwendet Windows Forms, nicht ASP.NET, die integrierte Unterstützung für AutoVervollständigen, aus verschiedenen Quellen –

Antwort

2

Out of the Box, nein, es gibt nichts, was Sie für Sie tun können. Ich habe versucht, P/Aufruf der grundlegenden FindWindowEx/EnumChildWindows um zu sehen, ob ich ein Handle auf die tatsächliche Dropdown bekommen kann, aber war nicht erfolgreich (wenn jemand es schafft, dies zu ziehen, lass es mich wissen!). Die gute Nachricht ist (nicht so gut, aber nicht schrecklich), dass die Autovervollständigung nicht wirklich etwas ist, das Sie vollständig selbst implementieren müssen, es gibt tatsächlich eine Win32-Funktion namens SHAutoComplete, die P/aufgerufen werden kann, um Ihnen bei der automatischen Vervollständigung zu helfen. Seien Sie noch nicht zu aufgeregt, denn es ist nicht so einfach wie P/Invoking und damit fertig zu sein. Allerdings gibt es eine großartige CodeProject article, die Ihnen enorm helfen sollte.

+1

Das ist ein hervorragender Artikel, und danke. Das wird eindeutig etwas graben. –

Verwandte Themen