Form vor "Verschieben" schützen



  • Gibt es eine Möglichkeit, mein Fenster (WinForms) für eine bestimmte Zeit, bzw. generell davor zu schützen, das der Anwender es verschiebt ?

    Etwas wie

    this.movability = false;

    Oder muss ich evtl. für die Zeit in der ich das will immer wieder die .loaction auf einen Festen Punkt setzten ?



  • Die Koordinaten in der Klasse evtl. mit konstanten Werten versehen?



  • funzt leider nicht





  • Generell Verschieben brutal verhindern:

    this.ControlBox = false;
    this.Text = "";
    

    Vielleicht nicht schön, aber wirkungsvoll! 🕶



  • Warum willst du denn verhindern dass die Form verschoben wird? Ansich solle man das nicht brauchen.



  • berniebutt schrieb:

    Generell Verschieben brutal verhindern:

    this.ControlBox = false;
    this.Text = "";
    

    Vielleicht nicht schön, aber wirkungsvoll! 🕶

    Sorry aber das funktioniert nicht. Das blendet die Menüleiste aus, aber verschieben kann man trotzdem.

    Warum ? Ja ich hab ne selbstgebaute MsgBox und will das die Mittig bleibt , sprich mir keiner das "hintere" Fenster wegzieht. Wird wohl in die Richtung aus dem Link bei Stackoverflow gehen, hätte gehofft es gibt ne "quick & dirrty" billig Lösung 🙂



  • Ginge nicht einfach "Form.ShowDialog" statt "Form.Show" ?



  • So, jetzt hat sich noch ein anderes kleines Problem dargestellt.

    Ich möchte aus meiner Form heraus auf Eigenschaften der "aufrufenden" Form zugreifen. Sprich in meinem Time_Tick testen ob sich die Position der aufrufenden Form geändert hat , und dann meine Form nachjustieren.

    Allerdings bring ich den Zugriff nicht wirklich hin. Wie muss ich dabei vorgehen ? form.partent.... führt immer zum Absturz...



  • Du musst das Parent ja erst setzen. Allerdings ist das ein bisschen was anders, mach es so:

    FormChild child = new FormChild();
    child.Show(this); //Setzt diese Form a Owner von FormChild
    
    //In FormChild geht dann
    string name = this.Owner.Name;
    

    Entsprechend kannst du dann auch auf alle anderen Member der Form zugreifen.



  • Danke, so hab ichs hinbekommen!!

    Du musst das Parent ja erst setzen. Allerdings ist das ein bisschen was anders

    Wie würde das dann gehen ?



  • c#_newbie schrieb:

    Wie würde das dann gehen ?

    //In FormParent
    FormChild child = new FormChild();
    child.TopLevel = false;
    child.Parent = this;
    child.Show();
    

    Allerdings ist das Child dann auf der Form, kein eigenes Fenster. So in etwa wie manche Programme in einen Hauptfenster Unterfenster haben die du verschieben kannst. 😉


Log in to reply