读书人

C#中,怎么在移动一个窗体时另一个窗体

发布时间: 2013-07-20 11:07:48 作者: rapoo

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;

}
}
}

读书人网 >C#

热点推荐