当前位置:   article > 正文

C#让子窗口紧靠父窗口右边(贴边显示),并随父窗口移动而移动_c#弹出窗口始终显示在父窗口上

c#弹出窗口始终显示在父窗口上

导读:

C#开发简单又愉快,但随着软件的强大,功能也会越来越多,如果全都是子窗口弹窗显示,会让用户觉得很不友好,看着也不舒服。比较好的开发方案是使用“面板+用户组件”,整个软件就只有一个窗口,但这种方案的前提是要重构布局和代码,对于已经成型的软件,再去做这些工作,估计要花费很多时间。因为我要加的子窗口比较小,为了简单省事,我想直接让子窗口贴靠在父窗口右侧。

步骤:

一、子窗口添加一个窗体加载事件Load

 Load事件代码如下:

  1. private void FormGive_Load(object sender, EventArgs e)
  2. {
  3. changgeLocation();
  4. }
  5. public void changgeLocation()
  6. {
  7. //获取父窗口坐标,FormZone是父窗口的类名
  8. int right = Application.OpenForms["FormZone"].Right;
  9. int top = Application.OpenForms["FormZone"].Top;
  10. this.Location = new Point(right, top);
  11. }

二、在父窗口上添加一个移动监听事件Move

1、创建一个isOpen变量,这个变量主要是用于判断子窗口是否已经打开,因为在父窗口第一次启动的时候,Move事件会被监听(调用)一次,而这个时候,我们还没点击打开子窗口呢,如果子窗口还没有创建,那我们直接在Move事件中移动子窗口,就会出错。

2、Move事件代码如下:

  1. //打开子窗口的按钮
  2. private void btnGive_Click(object sender, EventArgs e)
  3. {
  4. if (formGive == null)
  5. {
  6. formGive = new FormGive();
  7. //设置所有者,这样一来子窗口就可以调用父窗口的公共方法
  8. formGive.Owner = this;
  9. formGive.Show(this);
  10. isOpen = true;
  11. }
  12. }
  13. //子窗口
  14. FormGive formGive;
  15. bool isOpen = false;
  16. private void FormZone_Move(object sender, EventArgs e)
  17. {
  18. if (isOpen)
  19. {
  20. formGive.changgeLocation();
  21. }
  22. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/242238
推荐阅读
相关标签
  

闽ICP备14008679号