Autor Beitrag
Nemag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 132
Erhaltene Danke: 2



BeitragVerfasst: Do 07.08.08 21:08 
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)

ausblenden 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 //Somit behandelt er die gesamte Form als Titelleiste
   }

}



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 user profile iconChristian S.: C#-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 07.08.08 21:13 
Such mal nur in der WinForms-Sparte nach "form verschieben", die Frage gab es schonmal. :-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Nemag Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 132
Erhaltene Danke: 2



BeitragVerfasst: Do 07.08.08 21:19 
Das einzige was sich bis jetzt in die Richtung gefunden hab befasst sich immer mit der Variante:

ausblenden C#-Quelltext
1:
2:
3:
4:
EventMouseMove()
{
   Form.Location = (Location + MausOffSet)
}


Wie schon gesagt die Lösung reagiert ab einer gewissen Fenstergröße zu träge und scheint mir nicht "schön" genug.

HAt jemand voll Plan von der WndProc und kann mir in der Richtung weiterhelfen.

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 07.08.08 21:30 
Du hast nicht so gesucht, wie ich es Dir gesagt habe. :? Dann bekommst Du eine handvoll Threads, einer davon ist dieser hier: www.c-sharp-forum.de...ght=form+verschieben

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Nemag Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 132
Erhaltene Danke: 2



BeitragVerfasst: Do 07.08.08 21:33 
hehe du hast recht ich hatte nicht so gesucht...
(War unfähig die Suchfunktion richtig einzusetzten)

hab den Thread jetzt auch gefunden und werde das morgen mal testen wie in dem Artikel beschrieben.

Danke dir