Hallo
ich möchte eine eigene Form erstellen. Ansich nur die Titelleiste ausblenden und meine eigene Titelleiste erstellen. Diese neue Form möchte ich nun allerdings genauso wie die normale Windows.Forms.Form verschieben und vergrößern können.
Vergrößern war kein Problem
CreateParams überschrieben und die entsprcechenden Bits so gesetzt das der Rand um die Form gezeichnet wird
(Also letztendlich ist es jetzt FormBorderStyle.ToolWindow mit Text = "" und ControlBox = false -> dadurch wird die Titelleiste weggeblendet und erscheint auch nciht wenn der Text gesetzt wird.)
Also ich habe ein Panel was mir als Titelleiste dient und die Controls beinhaltet. Wenn ich auf diesem einen MouseButton gedrückt halte, möchte ich das Fenster verschieben. So jetzt meine Frage: wie geht das?
Bisherige Lösung: mittels MouseMove-Event die Location des Fensters setzen -> reagiert ab einer gewissen Fenstergröße zu träge und scheint mir auch nicht der richtig weg zu sein die windowseigenschaften selbst zu proggen da das ja auch alles vorhanden ist.
also WndProc überschrieben
(Hab jetzt leider nur PseudoCode hier)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| protected WndPRoc(ref Message) { if(Message.ID == ClickEvent) { wenn base.WndPRoc.Result = Clientbereich setzte base.WndPRoc.Result = Caption }
} |
Dass funktioniert aber nur wenn ich die Form selbst klicke. Wenn auf ein untergeordnetes Steuerelement geklickt wird wird das nicht zum Parent durchgereicht. Gibt es da ne Möglickeit wie ich das hochreichen kann?
Message.ID = 84 ist die ID von dem Klick im Clientenbereich - gibt es auch ne MessageID für einen Click der nicht im Messagebereich durchgeführt wird? Sodass die Form auch über ein Klick informiert wird der nicht im eigenen Clientenbereich durchgeführt wird?
Oder hat jemand eine bessere Idee sowas selbst zu schreiben
Moderiert von
Christian S.: C#-Tags hinzugefügt