2 Stimmen

Wie man ein Suche-Benutzersteuerelement in .net2.0 Winforms generisch macht

Ich habe einen Such-Usercontrol, den ich gerne generisch machen würde.

Das Steuerelement selbst wird eine unterschiedliche Sammlung von Steuerelementen enthalten, abhängig von seinem Kontext. Zum Beispiel könnten Lagerartikel, Personen, Adressen als Kontext der Suche dienen..

Wie kann ich es generisch machen, sodass es basierend auf dem Suchkontext genau weiß, welche Benutzersteuerelemente es im Formular benötigt?

Jeder Programmierer kann dann einfach das Benutzersteuerelement auf sein Formular ziehen, den Kontext festlegen und wir sind einsatzbereit.

Mein erster Gedanke ist es, ein Basiskontrolle für alle einzelnen Benutzersteuerelemente zu erstellen und das Suchfeld diese im Konstruktor akzeptiert, sodass es zur Laufzeit weiß, welche angezeigt werden sollen. Sie können geerbte Versionen der Basiskontrolle erstellen und diese übergeben. Oder vielleicht einfach den Suchkontext (enum) festlegen und es ermittelt zur Laufzeit, welche Benutzersteuerelemente benötigt werden.

Es handelt sich alles um .NET 2.0 Winform

Bearbeitet für bessere Lesbarkeit. Die Frage war vorher viel zu lang und detailliert.

2voto

Jeff Yates Punkte 59874

In unserem Projekt haben wir dies durch das Hinzufügen einer ISearchable-Schnittstelle mit den Eigenschaften CanSearch und Search umgesetzt. Diese nahmen ein Richtungsargument an, das vorwärts oder rückwärts angibt, und die Search-Methode nahm auch einen String für die Durchführung der Suche sowie eine Enumeration an, die den Typ des Treffers angibt (Anfang des Satzes, Ende des Satzes, im Satz enthalten, etc.).

Dann haben wir diese Schnittstelle auf alle Steuerelemente in einer Hierarchie implementiert. Jedes Steuerelement leitete dann je nach Bedarf an die untergeordneten Steuerelemente weiter. Unsere Containeranwendung enthielt ein Textfeld und Schaltflächen für die Suche nach dem nächsten/vorherigen Treffer. Der Container würde das erste angezeigte Steuerelement in der Hierarchie nach der Schnittstelle abfragen, die dann je nach Bedarf von einem Steuerelement in der Hierarchie zum Zielsteuerelement weitergeleitet würde.

Für unsere Zwischenablageoperationen haben wir einen alternativen Ansatz implementiert, bei dem wir zunächst überprüften, ob das aktiv fokussierte Steuerelement unsere ISupportEdit-Schnittstelle unterstützte. Falls nicht, haben wir dann den Hierarchieansatz verwendet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X