Userform in Userform resize



  • Hey Leute,

    ich bin gerade auf ein kleines Problem gestoßen, dass ich mir nicht erklären kann.

    Ich hab eine Form in einer Form und möchte von dieser die Größer mit der Mouse verändern.
    Code ist:

    private Form myform = new Form();
            public Form1()
            {
                InitializeComponent();
                myform.TopLevel = false;
    
                myform.Parent = this;
                myform.Show();
            }
    

    beim vergrößern bzw verkleinern von myform spinnt er total. Warum und wie kann ich das Lösen?



  • Wozu muss das zweite Form überhaupt ein Child vom ersten Form sein? Reicht es nicht einfach das zweite Form normal zu öffnen?



  • nein, es soll nur inerhalb der anderen Form sichtbar und verschiebbar sein.



  • Ich hab das jetzt auch mal in ein kleines Testprojekt gebracht und kann keinerlei Problem feststellen. Wie äußern sich deine Probleme? Was macht dein myform, was die Ursache sein könnte?



  • ich kann es Verschieben, Maximieren und Minimieren.

    Wenn ich versuche die Größe zu ändern flackert myform und behält seine Größe bei



  • Tja dann liegt das an irgendwelchen Sachen, die du in myform durchführst.

    Hast du irgendwelchen Code in irgendwelchen Resize-Handlern/Methoden?



  • ich hab das im oberen beispiel vereinfacht, so funktioniert es bei mir komischer weise auch. Im richtigen Code ist die Userform partent von tablelayoutpanel.



  • Zeig mal realen Code, wie du die myform aufrufst und eventuell auch noch etwas Code, was in deinem myform sonst noch passiert. - Bitte aber nur relevante Stellen, die bei Größenänderung von myform aufgerufen werden.



  • namespace GUI
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                myform.TopLevel = false;
                tableLayoutPanel1.Controls.Add(myCustomToolStrip,0,0);
                //tableLayoutPanel1.Controls.Add(myform, 0, 1);
                myform.Parent = tableLayoutPanel1;
                myform.Show();
                //myform.ResizeEnd += new EventHandler(myForm_resize);
                //myform.ResizeBegin += new EventHandler(myForm_resize_ResizeBegin);
                myform.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
                //myform.Controls.Add(new FormChart());
                //myform.Controls[0].Dock = DockStyle.Fill;
    
            }
            private CustomToolStrip myCustomToolStrip = new CustomToolStrip();
            private Form myform = new Form();
    
        }
    }
    


  • Gut, auch wenn du's auskommentiert hast. Was passiert in deinen Resize-Eventhandlern?



  • da hab ich meine eigene resize funktion reingeschrieben weil es ohne nicht funktioniert.

    //private void myForm_resize(object sender, EventArgs e)
            //{
            //    myform.Size = new System.Drawing.Size(Cursor.Position.X - myform.Location.X, Cursor.Position.Y - myform.Location.Y);
            //    myform.ResumeLayout();
            //}
    
            //private void myForm_resize_ResizeBegin(object sender, EventArgs e)
            //{
            //    myform.SuspendLayout();
            //}
    

    das funktioniert aber auch nur mäßig. SuspendLayout bringt überhaupt nichts. Ruckelt und zuckelt genauso wie vorher, aber dadurch lässt sich wenigstens die größe ändern.

    Ich glaube das einfachste ist ich lass die Form weg und schreib mein eigenes Fenster mit verschieben und größe skallieren in das CustomControl


Anmelden zum Antworten