请求大侠:C#中,怎样在移动一个窗体时另一个窗体也跟着同时移动?

解决方案 »

  1.   

    在Winform中用c#语言,怎样使移动一个窗体时另一个窗体也跟着同时移动? 
      

  2.   

     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                Form2 f = new Form2(this);
                f.Show();
            }
        } public partial class Form2 : Form
        {
            public Form1 f1 = null;
            int initx=0;//初始left距离
            int inity=0;//初始top距离
            int initx1 = 0;//初始left距离
            int inity1 = 0;//初始top距离
            public Form2(Form1 f)
            {
                f1 = f;
                InitializeComponent();
                initx = this.Left;
                inity = this.Top;
                initx1 = f1.Left;
                inity1 = f1.Top;
            }        private void Form2_Move(object sender, EventArgs e)
            {
                f1.Top = initx1 + (this.Top - inity);
                f1.Left = inity1 + (this.Left - initx);
            }
        }
      

  3.   


    在第一个窗口添加LocationChanged事件的处理函数,然后再里面设置第二个窗口的位置
      

  4.   


    public partial class Form1 : Form
        {
            Form2 f = null;
            int initx = 0;//初始left距离
            int inity = 0;//初始top距离
            int initx1 = 0;//初始left距离
            int inity1 = 0;//初始top距离
            public Form1()
            {
                InitializeComponent();
               
           }        private void button1_Click(object sender, EventArgs e)
            {
                f = new Form2();
                f.Show();
                initx = this.Left;
                inity = this.Top;
                initx1 = f.Left;
                inity1 = f.Top;
            }        private void Form1_Move(object sender, EventArgs e)
            {
                if (f != null)
                {
                    f.Top = initx1 + (this.Top - inity);
                    f.Left = inity1 + (this.Left - initx);
                }
            }       
        }
      

  5.   

    我试了一下你的方案,还是不行, initx = this.Left;
                inity = this.Top;
                initx1 = f.Left;
                inity1 = f.Top;
    到Form1_Move事件时,这几个值都是0,移动第一个窗体,第二个窗体也不移动。注:我的第一个窗体是居中显示!!!
      

  6.   

    你的第一个窗口是原始窗口还是,弹出窗口?如果是原始窗口上面代码是可以的。如果要移动弹出窗口,稍微修改下上面代码:namespace 移动窗体
    {
        public partial class Form1 : Form
        {
            private Form f;
            int initx = 0;//初始left距离
            int inity = 0;//初始top距离
            int initx1 = 0;//初始left距离
            int inity1 = 0;//初始top距离
            public Form1()
            {
                InitializeComponent();
            }        private void btnShowDialog_Click(object sender, EventArgs e)
            {
                f=new Form();
                f.Show();
                f.Move += f_Move;            initx = this.Left;
                inity = this.Top;
                initx1 = f.Left;
                inity1 = f.Top;
            }        private void f_Move(object sender, EventArgs e)
            {
                this.Top += f.Top - inity1;
                this.Left += f.Left - initx1;
                inity1 = f.Top;
                initx1 = f.Left;        }
        }
    }
      

  7.   


    现在是有三个窗体?你到底要移动哪个动哪个不好意思,也许是我描述的不清楚,是这样的,在一个界面上双击SHow弹出一个窗体标示为Form1,剧中显示,Form1里面有一个按钮是show弹出另一个窗体标示为Form2,两个窗体都弹出时,移动第一个窗体Form1,第二个窗体Form2也随之移动...
      

  8.   

    我给你代码没有问题,我移动form1  form2随动你的代码贴上来吧