2009-08-25 13 views
0

Ich entwickle eine benutzerdefinierte Liste Art von Idee, die im Wesentlichen aus usercontrols vertikal in einem FlowLayoutPanel gestapelt besteht. Ich schreibe es so, dass ich Schaltflächen hinzufügen kann, die auf dem Listenelement angezeigt werden, wenn es ausgewählt ist.Erfassen aller Klickereignisse in Benutzersteuerelement

Das Listenelement Steuerelement hat ein paar Beschriftungen darauf und einige Felder. Um festzustellen, ob das gesamte Listenelement angeklickt wurde (um es auszuwählen und die Schaltflächen anzuzeigen), muss ich Click Event Handler hinzufügen zu allen Etiketten und Panels usw.

Ich frage mich, ob es einen einfacheren Weg gibt, dies zu tun, indem ich alle Click-Events für das Control einbilde, ähnlich wie KeyPreview, aber für Click-Events.

Danke.

Antwort

0

Fügen Sie ein Rechteck über den Anfang der Benutzersteuerelemente hinzu und malen Sie mit einem transparenten Pinsel, und fügen Sie dann den Click-Handler hinzu.

Andrew

+0

Ein Rechteck? Wie in einem System.Drawing.Rectangle? –

+0

http://stackoverflow.com/questions/347439/custom-controls-in-c-winforms-mouse-event-question –

0

ich es gelöst schließlich von WndProc überschreiben wie so:

public partial class ListItem: UserControl 
{ 
    private const int WM_MOUSEACTIVATE = 0x0021; 

    protected override void WndProc(ref Message m) 
    { 
     if(m.Msg == WM_MOUSEACTIVATE) 
     { 
      Debug.Print("Activated!"); 
     } 

     base.WndProc(ref m); 
    } 
} 

Ich rechne damit, das ist wahrscheinlich die einfachste Lösung. Trotzdem, danke für die Vorschläge Andrew!

Verwandte Themen