赞
踩
C#开发简单又愉快,但随着软件的强大,功能也会越来越多,如果全都是子窗口弹窗显示,会让用户觉得很不友好,看着也不舒服。比较好的开发方案是使用“面板+用户组件”,整个软件就只有一个窗口,但这种方案的前提是要重构布局和代码,对于已经成型的软件,再去做这些工作,估计要花费很多时间。因为我要加的子窗口比较小,为了简单省事,我想直接让子窗口贴靠在父窗口右侧。
一、子窗口添加一个窗体加载事件Load
Load事件代码如下:
- private void FormGive_Load(object sender, EventArgs e)
- {
- changgeLocation();
- }
- public void changgeLocation()
- {
- //获取父窗口坐标,FormZone是父窗口的类名
- int right = Application.OpenForms["FormZone"].Right;
- int top = Application.OpenForms["FormZone"].Top;
- this.Location = new Point(right, top);
- }
二、在父窗口上添加一个移动监听事件Move
1、创建一个isOpen变量,这个变量主要是用于判断子窗口是否已经打开,因为在父窗口第一次启动的时候,Move事件会被监听(调用)一次,而这个时候,我们还没点击打开子窗口呢,如果子窗口还没有创建,那我们直接在Move事件中移动子窗口,就会出错。
2、Move事件代码如下:
- //打开子窗口的按钮
- private void btnGive_Click(object sender, EventArgs e)
- {
- if (formGive == null)
- {
- formGive = new FormGive();
- //设置所有者,这样一来子窗口就可以调用父窗口的公共方法
- formGive.Owner = this;
- formGive.Show(this);
- isOpen = true;
- }
- }
- //子窗口
- FormGive formGive;
- bool isOpen = false;
- private void FormZone_Move(object sender, EventArgs e)
- {
- if (isOpen)
- {
- formGive.changgeLocation();
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。