2012-04-03 3 views
0

In meinem Projekt habe ich mehrere Steuerelemente, die eine Reihe von Punkten auf dem Bildschirm anzeigen. Ich würde gerne "Lasso-Auswahl" -Funktion für alle diese Steuerelemente bereitstellen. Um dies zu tun, schrieb ich eine Klasse namens "Lasso", die sich um das Verfolgen von Mausbewegungen kümmert, das Lasso anzeigt, ein Ereignis auslöst, wenn das Lasso geschlossen ist, usw. So weit, so gut. Aber, um das Lasso zu verwenden, muss ich Code wie folgt schreiben:Hinzufügen von benutzerdefiniertem UI-Verhalten zu Steuerelementen über eine Komponente

public partial class MyControl : UserControl { 

    private Lasso lasso; 

    public MyControl() { 
     InitializeComponent(); 

     lasso = new Lasso(); 
     lasso.HookEvents(this); 
    } 
} 

Die „lasso.HookEvents“ Methode kümmert sich um Einhaken des lasso auf die Mausereignisse für die Host-Steuerung auf.

Was ich tun möchte ist irgendwie eine Möglichkeit für Menschen zur Verfügung zu stellen, einfach die "Lasso" -Komponente aus der Toolbox auf ihr UserControl oder Formular zur Entwurfszeit ziehen, und sich keine Sorgen über das Schreiben von Code selbst; das Lasso sollte magisch "nur funktionieren". Gibt es eine Möglichkeit, das zu tun? Ich habe versucht, meine Lasso-Klasse von Component zu erweitern, aber ich konnte nicht herausfinden, wie der Designer den Aufruf von "lasso.HookEvents (this)" automatisch generiert.

Antwort

0

Wenn möglich, erfassen Sie einfach die Mausereignisse im Objekt Lasso. Wenn das nicht möglich ist oder nicht funktioniert: Fügen Sie in Ihrer Klasse Lasso einen Handler zum Loaded-Ereignis hinzu, und führen Sie im Handler this.HookEvents(this.Parent); aus.

+0

Leider erweitert meine Lasso-Klasse Component, nicht Control; Daher hat es kein "Loaded" -Ereignis. Ich möchte die Kontrolle nicht erweitern, da das Lasso keine eigene Benutzeroberfläche hat. Es bietet nur UI-Verhalten für das übergeordnete Element. – Bugmaster

Verwandte Themen