[Windows Forms] Form verschiebbar machen!?
-
hi,
Ich habe ein problem. Normalerweise kann man ja an der titelleiste einer Form die Application verschieben. Wenn ich aber nun "FormBorderStyle" auf "None" setze, ist die leiste ja weg.
Kann ich es irgendwie machen dass ich die Form verschieben kann wen man den hintergrund "wegzieht"? hoffe hier versteht jemand mein problem... weis nicht wie ichs anderst erklären soll.
Danke.
chips
-
Wenn Du keinen Border hast, wie willst Du es dann verschieben? Und was für ein Hintergrund ziehst Du weg?
-
...ich zieh nix weg....
und eben das war die frage: wenn ich keinen border hab, wie kann ich die "anwendung" dann verschieben? oder geht das gar nicht?
danke
chips
-
Die Frage hast Du dir ja selber beantwortet... der Benutzer kann nix verschieben, da nix da ist zum "Anfassen"...
Du kannst aber immer eine neue Position zuweisen, wenn Du das gemeint hast...
-
Du musst einfach die Events MouseDown und MouseMove abfangen und dann dort die Zeigerposition abfragen und damit die Fensterposition manipulieren.
In den Konstruktor des Forms:
MouseOffset = gcnew Point;
Dann baust Du ein Event mit:
void Form1::OnMouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { MouseOffset->X = -e->X; MouseOffset->Y = -e->Y; };
und noch ein Event mit:
void Form1::OnMouseMove(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { if (e->Button == System::Windows::Forms::MouseButtons::Left) { System::Drawing::Point MousePos = System::Drawing::Point(Control::MousePosition); MousePos.Offset(MouseOffset->X, MouseOffset->Y); Location = MousePos; }; };
... und schon funktioniert das
Dafür gibt es übrigens das gleiche Beispiel im Netz (nur leider in C#).
-
hey, thx!
werds gleich mal ausprobieren.
lg chips
-
...also irgendwie tut des nich... ...muss ich da noch irgendwas includieren oda so?
also bei mir zeigt der an:error C2065: 'MouseOffset': nichtdeklarierter Bezeichner
...was hab ich falsch gemacht?
danke für eure hilfe
chips
-
Den nicht deklarierten Bezeichner "MouseOffset" verwendet.
Ein wenig mehr infos wären toll
-
...jo, so viel war mir eiglt. klar...
was für infos braucht ihr noch?
...kenn mich mit C++/CLI noch net so gut aus, sry^^
chips
-
Hast du "MouseOffset" auch deklariert?
//unter private: Point^ MouseOffset;
Und da initialisieren, wie schon von Macan geschrieben, im Konstruktor:
MouseOffset = gcnew Point;
-
wahhhhhh bin ich plöööt....
...hatt ich vergessen
dankeeee!
...jetzt tuts
chips