how to move two windows forms together?

前端 未结 2 807

I\'ve main form when I press btn I open new form with showDialog() function, I need to move two forms together when I press on main form, because they share in design. how

相关标签:
2条回答
  • 2020-12-20 09:39

    The main ingredients are the forms' Top, Left, Location, and Width properties. Say you have a reference to both forms, called form1 and form2. You could reposition windows like so:

    form2.Location = new Point(form1.Left + form1.Width, form1.Top);
    

    The result is both forms, top aligned, with form2 on the right.

    Reference:

    http://msdn.microsoft.com/en-us/library/aa984420.aspx

    0 讨论(0)
  • 2020-12-20 09:51

    You could create a separate class to manage the form connections and event handling.

    class FormConnector
    {
        private Form mMainForm;
    
        private List<Form> mConnectedForms = new List<Form>();
    
        private Point mMainLocation;
    
        public FormConnector(Form mainForm)
        {
            this.mMainForm = mainForm;
            this.mMainLocation = new Point(this.mMainForm.Location.X, this.mMainForm.Location.Y);
            this.mMainForm.LocationChanged += new EventHandler(MainForm_LocationChanged);
        }
    
        public void ConnectForm(Form form)
        {
            if (!this.mConnectedForms.Contains(form))
            {
                this.mConnectedForms.Add(form);
            }
        }
    
        void MainForm_LocationChanged(object sender, EventArgs e)
        {
            Point relativeChange = new Point(this.mMainForm.Location.X - this.mMainLocation.X, this.mMainForm.Location.Y - this.mMainLocation.Y);
            foreach (Form form in this.mConnectedForms)
            {
                form.Location = new Point(form.Location.X + relativeChange.X, form.Location.Y + relativeChange.Y);
            }
    
            this.mMainLocation = new Point(this.mMainForm.Location.X, this.mMainForm.Location.Y);
        }
    }
    

    Now all you have to do is to instantiate a FormConnector and call ConnectForm method with the form you want to connect to.

    0 讨论(0)
提交回复
热议问题