Winform多窗体跟随移动的问题!

seawaycao 2011-08-25 08:29:52
Winform多窗体跟随移动的问题!

C#项目有两个窗体,form1为主窗体,设计为点击form1上的按钮弹出窗体form2,

1.让form2跟随form1移动,这个我已经完成了;是用在form1窗体载入时创建form2对象的,然后在form1的move事件中设置form2的top、left属性实现的方法。

2.那么怎么让form1跟随form2移动呢??谢谢了!!
...全文
436 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
seawaycao 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 assky124 的回复:]
实例化子窗体的时候吧主窗体的引用传进去

C# code


public class ChildrenFrm:Form
{
public ChildrenFrm(Form pare)
{
pare.LocationChanged +=
}
}
[/Quote]

谢谢了,这段代码似乎不全吧~~~
ll631600181bb 2011-08-26
  • 打赏
  • 举报
回复
设置form1的top、left属性 的方法。
  • 打赏
  • 举报
回复
试试看重写form2构造函数带form参数的,把form1复制一份传到form2里,然后在form2里你在编代码搞定它
assky124 2011-08-26
  • 打赏
  • 举报
回复
实例化子窗体的时候吧主窗体的引用传进去


public class ChildrenFrm:Form
{
public ChildrenFrm(Form pare)
{
pare.LocationChanged +=
}
}

isjoe 2011-08-26
  • 打赏
  • 举报
回复

1、两个预览窗口的定义,是Form
/// <summary>
/// 预览窗口
/// </summary>
private ImageFrm m_ifrm = new ImageFrm();

/// <summary>
/// 预览窗口
/// </summary>
private ImageFrm1 m_ifrm1 = new ImageFrm1();

2、在主窗口的Load,初始化他们,这两个窗口会停止主窗口的右侧
/// <summary>
/// Load...
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DiaryFrm_Load(object sender, EventArgs e)
{


this.m_ifrm.Location = new Point(this.Location.X + this.Width, this.Location.Y);
this.m_ifrm.Owner = this;
this.m_ifrm.Show();

this.m_ifrm1.Location = new Point(this.Location.X + this.Width, this.Location.Y + this.m_ifrm.Height);
this.m_ifrm1.Owner = this;
this.m_ifrm1.Show();
加载两个事件
this.LocationChanged += new EventHandler(DiaryFrm_LocationChanged);
this.SizeChanged += new EventHandler(DiaryFrm_SizeChanged);
}

3、事件代码
/// <summary>
/// Size Changed
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DiaryFrm_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{

}
else
if (this.WindowState == FormWindowState.Maximized)
{

this.m_ifrm.Location = new Point((this.Location.X + this.Width) - this.m_ifrm.Width - 20, this.Location.Y + SystemInformation.CaptionHeight + SystemInformation.ToolWindowCaptionHeight);


this.m_ifrm1.Location = new Point((this.Location.X + this.Width) - this.m_ifrm.Width - 20, this.Location.Y + this.m_ifrm.Height + SystemInformation.CaptionHeight + SystemInformation.ToolWindowCaptionHeight);
}
else
{

this.m_ifrm.Location = new Point(this.Location.X + this.Width, this.Location.Y);


this.m_ifrm1.Location = new Point(this.Location.X + this.Width, this.Location.Y + this.m_ifrm.Height);
}
}

/// <summary>
/// Location Changed
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DiaryFrm_LocationChanged(object sender, EventArgs e)
{
if (this.WindowState != FormWindowState.Maximized)
{
this.m_ifrm.Location = new Point(this.Location.X + this.Width, this.Location.Y);
this.m_ifrm1.Location = new Point(this.Location.X + this.Width, this.Location.Y + this.m_ifrm.Height);
}
}
seawaycao 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 isjoe 的回复:]
C# code

1、两个预览窗口的定义,是Form
/// <summary>
/// 预览窗口
/// </summary>
private ImageFrm m_ifrm = new ImageFrm();

/// <summary>
/// 预览窗口
/// </summ……
[/Quote]

谢谢你!只不过你的代码只是解决了我已经解决的问题,没有解决我的第二个问题!!~~
rollng 2011-08-25
  • 打赏
  • 举报
回复
直接用委托事件就可以了:

首先Bind1方法为无返回类型,那就用无返回类型的delegate
1、子窗体class前定义

public delegate void Callback(string strexchange);
// 后再子窗体中添加如下代码
public event Callback Callevent=null;

//放在btnOK_Click事件中
Callevent(textbox1.text);//子窗体的this.textbox1

2.主窗体
调用委托事件
子窗体 chil = new 子窗体();
chil.Show();
chil.Callevent += new Callback(chil_Callevent);

void chil_Callevent(object sender)
{
this.textbox1.text=sender;//主窗体的this.textbox1
}
半兽人写程序 2011-08-25
  • 打赏
  • 举报
回复
form2 添加 move 。再传到form1就是了。窗口之间通信而已。如果form1 是 form2 parent,那更简单
seawaycao 2011-08-25
  • 打赏
  • 举报
回复
自己顶一下咯·~~~
seawaycao 2011-08-25
  • 打赏
  • 举报
回复
主启动窗体form1的对象是在program.cs中main()方法创建的·~~~
无法设置为public吧?而且窗体对象没有Modifiers属性…………

请高手们指教啊!谢谢了!!
seawaycao 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kongwei521 的回复:]
zai form2的move事件中设置form1的top、left属性 的方法。试试、
[/Quote]

由于form2是form1创建对象后show()出来的,form2中似乎无法设置form1的top、left属性。
本人是菜鸟,希望继续指导一下,谢谢了!!
蝶恋花雨 2011-08-25
  • 打赏
  • 举报
回复
zai form2的move事件中设置form1的top、left属性 的方法。试试、

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧