如何解决多个Form同步移动,同步关闭的问题?(高分求助,热心人请进!!) 我建了两个Form,Form1和Form2,我把这两个Form的初始位置都设成CenterScreen,除此之外我想实现用鼠标拖动其中一个Form时另一个Form也同步动,关掉其中一个Form时,另一个Form也被关掉。不知道能不能这样,如果能的话,具体怎么操作呢?最好直接上code! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为什么不放一个窗体里呢?>??看看下面的能不能帮你把 private MoveForm m_Form1 = new MoveForm(); private Form2 m_Form2 = new Form2(); private Point m_Point1 = new Point(0,0); private Point m_Point2 = new Point(100, 100); private void Form1_Load(object sender, EventArgs e) { m_Form1.Show(); m_Form2.Show(); m_Form1.Location = m_Point1; m_Form2.Location = m_Point2; m_Form1.LocationChanged += new EventHandler(m_Form1_LocationChanged); m_Form2.LocationChanged += new EventHandler(m_Form2_LocationChanged); m_Form1.FormClosing += new FormClosingEventHandler(m_Form1_FormClosing); m_Form2.FormClosed += new FormClosedEventHandler(m_Form2_FormClosed); } void m_Form2_FormClosed(object sender, FormClosedEventArgs e) { m_Form1.Hide(); } void m_Form1_FormClosing(object sender, FormClosingEventArgs e) { m_Form2.Hide(); } void m_Form2_LocationChanged(object sender, EventArgs e) { if (m_Form2.WindowState == FormWindowState.Minimized || m_Form1.WindowState == FormWindowState.Minimized) return; m_Form1.LocationChanged -= m_Form1_LocationChanged; int _MoveX = m_Form2.Location.X - m_Point2.X; int _MoveY = m_Form2.Location.Y - m_Point2.Y; m_Form1.Top += _MoveY; m_Form1.Left += _MoveX; m_Point2 = m_Form2.Location; m_Point1 = m_Form1.Location; m_Form1.LocationChanged += new EventHandler(m_Form1_LocationChanged); } void m_Form1_LocationChanged(object sender, EventArgs e) { if (m_Form2.WindowState == FormWindowState.Minimized || m_Form1.WindowState == FormWindowState.Minimized) return; m_Form2.LocationChanged-=m_Form2_LocationChanged; int _MoveX = m_Form1.Location.X - m_Point1.X; int _MoveY = m_Form1.Location.Y - m_Point1.Y; m_Form2.Top += _MoveY; m_Form2.Left+= _MoveX; m_Point1 = m_Form1.Location; m_Point2 = m_Form2.Location; m_Form2.LocationChanged += new EventHandler(m_Form2_LocationChanged); } private void Form1_Load(object sender, EventArgs e) { m_Form2.TopLevel = false; m_Form2.Parent = this; m_Form2.Show(); }这种方式不知道是不是你想要的结果. 这个不是我想要的效果,我想要的是当运行程序的时候,两个Form看起来就像是一个Form一样。 其实很简单。这样比如你的主Form是Form1弹出Form是Form2简单的写一下,写一下两个窗体挨在一起的,不挨在一起的,另一个窗体的位置固定点坐矢量相加就行了(就是坐标的变化)在Form1的Move事件中这样写private void Form1_Move(object sender, EventArgs e){ form2.Left = this.Right; form2.Top = this.Top;}当然,这是确保在Form2已经弹出,并且是非模式窗口的。 谁用过Lodop5.0啊??请教.... 如何获取 webbrowser 鼠标所悬停区域 右键 属性->地址(url)里面的字符串 传递数组参数问题! c#读取excel数据,对excel格式有什么限制??? 关于设置每年的节日的数组的问题???? 一个socket问题 新手望大家支持下 顶猛点~~~ #####把动态网页转成XML#######(100分) 将构造函数定义为private与其子类的构造函数有什么关系 求高手进来看看 ftp创建文件夹保存 用C#的listview怎样做这效果? 关于 .net2003中的datagrid控件保存数据的问题。。。。。。 连续安装问题
private Form2 m_Form2 = new Form2();
private Point m_Point1 = new Point(0,0);
private Point m_Point2 = new Point(100, 100);
private void Form1_Load(object sender, EventArgs e)
{
m_Form1.Show();
m_Form2.Show(); m_Form1.Location = m_Point1;
m_Form2.Location = m_Point2;
m_Form1.LocationChanged += new EventHandler(m_Form1_LocationChanged);
m_Form2.LocationChanged += new EventHandler(m_Form2_LocationChanged);
m_Form1.FormClosing += new FormClosingEventHandler(m_Form1_FormClosing);
m_Form2.FormClosed += new FormClosedEventHandler(m_Form2_FormClosed); } void m_Form2_FormClosed(object sender, FormClosedEventArgs e)
{
m_Form1.Hide();
} void m_Form1_FormClosing(object sender, FormClosingEventArgs e)
{
m_Form2.Hide();
} void m_Form2_LocationChanged(object sender, EventArgs e)
{
if (m_Form2.WindowState == FormWindowState.Minimized || m_Form1.WindowState == FormWindowState.Minimized) return;
m_Form1.LocationChanged -= m_Form1_LocationChanged;
int _MoveX = m_Form2.Location.X - m_Point2.X;
int _MoveY = m_Form2.Location.Y - m_Point2.Y;
m_Form1.Top += _MoveY;
m_Form1.Left += _MoveX;
m_Point2 = m_Form2.Location;
m_Point1 = m_Form1.Location;
m_Form1.LocationChanged += new EventHandler(m_Form1_LocationChanged);
} void m_Form1_LocationChanged(object sender, EventArgs e)
{
if (m_Form2.WindowState == FormWindowState.Minimized || m_Form1.WindowState == FormWindowState.Minimized) return;
m_Form2.LocationChanged-=m_Form2_LocationChanged;
int _MoveX = m_Form1.Location.X - m_Point1.X;
int _MoveY = m_Form1.Location.Y - m_Point1.Y;
m_Form2.Top += _MoveY;
m_Form2.Left+= _MoveX;
m_Point1 = m_Form1.Location;
m_Point2 = m_Form2.Location;
m_Form2.LocationChanged += new EventHandler(m_Form2_LocationChanged);
}
{ m_Form2.TopLevel = false;
m_Form2.Parent = this; m_Form2.Show();
}这种方式不知道是不是你想要的结果.
这样比如你的主Form是Form1弹出Form是Form2
简单的写一下,写一下两个窗体挨在一起的,不挨在一起的,另一个窗体的位置固定点坐矢量相加就行了(就是坐标的变化)
在Form1的Move事件中这样写private void Form1_Move(object sender, EventArgs e)
{
form2.Left = this.Right;
form2.Top = this.Top;
}
当然,这是确保在Form2已经弹出,并且是非模式窗口的。