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