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" 可以隐藏子窗体在任务栏中的缩略窗口效果。

  • 相关阅读:
    vue2 v-model/v-text 中使用过滤器的方法示例
    HTML5游戏开发案例教程合集
    Docker实战案例视频课程
    Java项目框架架构与优化教程
    Linux云计算-虚拟化技术视频教程
    udl
    Chloe官网及基于NFine的后台源码毫无保留开放
    抽象类存在的意义和作用
    Shell 脚本语法
    Github 高级搜索功能
  • 原文地址:https://www.cnblogs.com/u-drive/p/8261108.html
Copyright © 2011-2022 走看看