zoukankan      html  css  js  c++  java
  • WPF 父子窗体联动

       问题:

         近段时间,由于项目上的一些原因,设计到在WPF项目使用引用COM组件的问题,部分WPF元素浮动在COM组件之上,并且实现拖、停靠、放大等功能(子窗体不要求等比缩放,只要位置跟随主窗体即可),如图:

        

    如何实现:

       方式1:

                         1、子窗体相对父窗体定位,通过父窗体LocationChanged事件,保持子父窗体相对位置

            2、 并且使用Topmost="True",使子窗体置于父窗体之上

            3、 Application.Current.Deactivated 与 Application.Current.Activated 处理应用获取失去焦点问题,控制子窗体的显示与隐藏

                         示例代码:  WPFChildParrentDemo.7z

              存在问题:

          2. 尚未解决父窗体放大缩小等问题

            2.  父窗体拖动时,子窗体位置正常显示;父窗体停靠最大化、普通、最小化时,子窗体位置不能正确显示,如图:

          

            

         3.  应用激活、后台时,子父窗体能正常显示,但是遇到百度云等浮动小窗体时,子父窗体不能正确显示,如图:

          

        方式2:   

          1、子窗体相对父窗体定位,通过父窗体LocationChanged事件,保持子父窗体相对位置

            2、 并且设置子窗体Owner属性为对应父窗体的引用

              实例代码:WPFChildParrentDemo2.7z

          优点:

           无需手动编码控制子窗体的显示隐藏即借助于( Application.Current.Deactivated 与 Application.Current.Activated 事件或其他事件),即能很好的解决方式1第2个问题

    PS:

      1. 可以通过SizeChanged事件来处理父窗体大小改变之后子窗体等位置更新问题。

      2. 通过设置OwnerShowInTaskbar="False" 可以隐藏子窗体在任务栏中的缩略窗口效果。

  • 相关阅读:
    asp.net core abp 视频教程1
    一种简单、易用的顶尖学习法——费曼学习法
    WPF附加属性
    WPF popup被截断的原因和修改方法
    cefsharp 在anycpu下运行
    XP系统运行wpf程序出现透明现象的解决
    Visual studio 2017 Installer 打包.netframework
    WPF Datagrid横向排列
    “App.exe 以附加有调试器,但没有将该调试器配置为调试此未经处理的异常。”
    Head First Python学习笔记4——处理数据
  • 原文地址:https://www.cnblogs.com/u-drive/p/8261108.html
Copyright © 2011-2022 走看看