Laden...

Form nicht über Desktoprand hinausschieben können

Erstellt von darkangel1208 vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.230 Views
D
darkangel1208 Themenstarter:in
20 Beiträge seit 2010
vor 14 Jahren
Form nicht über Desktoprand hinausschieben können

Hmm ich finde dazu leider nix im Netz, hab auch keine Ahnung was ich bei Google noch eingeben könnte.

Man kann die Form (nach dem Ausführen) oben an der blauen Leiste anfassen und verschieben. Ich möchte nun, dass man die Form zwar verschieben kann aber nicht über den Rand des Desktops hinaus. Also die Form soll nicht halb rechts aus dem Monitor geschoben werden können. (links, oben, unten genauso)

Gibts dafür nen Befehl oder so? Kann wer helfen?

Gelöschter Account
vor 14 Jahren

du musst doch einfach nur im moving event prüfen ob du noch vollständig im sichtbaren bereich bist und dann ggf. eine neupositionierung vornehmen. oder du versuchst die location property zu überschreiben, wobei ich hier nciht sicher bin ob man das kann.

467 Beiträge seit 2007
vor 14 Jahren

du könntest, wenn dir wirklich nichts anderes einfällt, prüfen, ob die Form über den Rand geht, und dann die Form zurückverschieben.
Mist zu spät.

2.891 Beiträge seit 2004
vor 14 Jahren

Stichworte: Control.LocationChanged-Ereignis, Control.Location-Eigenschaft, Control.Size-Eigenschaft und Screen.GetBounds-Methode

Beim Verschieben gucken, ob es über den Bildschirmrand ragt; wenn ja, die Position so verändern, dass es nicht mehr der Fall ist.

EDIT: Grr, zu langsam. Aber mehr Text 😃

Gruß,
dN!3L

D
darkangel1208 Themenstarter:in
20 Beiträge seit 2010
vor 14 Jahren

Wow sovieleAntworten, werd mich gleich mal dranbegeben
Danke 👍 👍

D
darkangel1208 Themenstarter:in
20 Beiträge seit 2010
vor 14 Jahren

Hmm komm nun doch net mehr weiter.
Ich hab mir nun den code zusammen gebastelt, das ne Messagbox kommt solbald die form das Fensterverlässt. läuft auch alles richtig so, dochich will die Zeile mit der Messagebox nun ersetzten durch, dass es sich nicht weiterschieben lassen osll. Da stehe ich aber uf dem Schlauch. Neu Zeichnen ist zwar toll, aber die Location property ist schreibgeschützt.


        private void Mahjongg_LocationChanged(object sender, MouseEventArgs e)
        {
            if (((this.Location.X + this.Size.Width) >= breite) || (this.Location.X < 0) || ((this.Location.Y + this.Size.Height + 30) >= höhe) || (this.Location.Y < 0))
            {
                ausserhalb = true;
                MessageBox.Show("Stop");
            }
            else
                ausserhalb = false;
        }

Denn da meine form keine Titelleiste mehr hat und dort ein toolStrip liegt , lasse ich mit dem folgendem code bei gedrückerter Moustaste das Fenster verschieben. aber wie kombiniere ich die beiden? denn auf ausserhalb == false reagiert er erst, wenn ich die muose einmal loslasse und wieder drücke.


        private void Mahjongg_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if ((e.Button == MouseButtons.Left) && (ausserhalb == false))
            {
                ReleaseCapture();
                SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
            }
        }

Gelöschter Account
vor 14 Jahren

so geht das:
location = new Point(x,y);

D
darkangel1208 Themenstarter:in
20 Beiträge seit 2010
vor 14 Jahren

ah super ja ich ka nicht drauf

hatte

this.location = (MousePosition.X, MousePosition.Y)

da gab natürlich nur Fehlermeldungen. Super nun funktioniert alls klasse