首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#中,怎么在移动一个窗体时另一个窗体也跟着同时移动

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

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


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);


            }
        }

       
    }


[解决办法]
你的第一个窗口是原始窗口还是,弹出窗口?如果是原始窗口上面代码是可以的。如果要移动弹出窗口,稍微修改下上面代码:

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;

        }
    }
}

热点排行