C#怎么实现二个窗体一起拖动(二个不同的窗体)

解决方案 »

  1.   

    Form有个LocationChanged事件
    里面让两个Form的相对位置保持不变即可
      

  2.   

    添加2个Form,Form1和Form2,然后在Form1写如下代码:        private Form2 frm = new Form2();
            private void Form1_LocationChanged(object sender, EventArgs e)
            {
                if (frm.Visible==true)
                {
                    frm.SetDesktopLocation(this.Location.X, this.Location.Y+this.Height);
                }
            }        private void Form1_Load(object sender, EventArgs e)
            {
                frm.Show();
            }
      

  3.   

    如果你想两个窗体,无论拖动哪个窗体另一个窗体也跟随移动,则需要少许改动:
    Form1.cs:        private Form2 frm;
            private void Form1_LocationChanged(object sender, EventArgs e)
            {
                if (frm!=null)
                {
                    frm.SetDesktopLocation(this.Location.X, this.Location.Y+this.Height);
                }
            }        private void Form1_Load(object sender, EventArgs e)
            {
                frm = new Form2(this);
                frm.Show();
            }        private void Form1_SizeChanged(object sender, EventArgs e)
            {
                if (frm != null)
                    frm.WindowState = this.WindowState;
            }
    Form2.cs:        private Form1 frm;
            public Form2(Form1 form)
            {
                InitializeComponent();
                frm = form;
            }        private void Form2_LocationChanged(object sender, EventArgs e)
            {
                if (frm != null)
                {
                    if (this.WindowState == FormWindowState.Normal)
                        frm.SetDesktopLocation(this.Location.X, this.Location.Y - this.Height);
                    else
                        frm.WindowState = this.WindowState;
                }
            }        private void Form2_SizeChanged(object sender, EventArgs e)
            {
                if (frm != null)
                    frm.WindowState = this.WindowState;
            }不过有一个缺点就是,一旦你更改1个窗体的高度使2个窗体高度不一致,那么再移动的时候就会出问题。