zoukankan      html  css  js  c++  java
  • WPF 窗体在Alt+Tab中隐藏

    问题: 

         近段时间由于项目上的需求,需要在WPF中使用COM组件,并且由于软件界面设计等等原因,需要将部分控件显示在COM组件之上,由于WindowsFormsHost的一些原因,导致继承在WPF中的Winform控件或者COM组件总是置于顶层,覆盖其他WPF元素。

      为了解决样式布局问题,这里我采用了父子窗体方式实现,使用定位方式将子窗体置于父窗体的合适位置:

      

      这样,解决了设计上的问题,但是新的问题随之又来了:使用Alt+Tab、或者任务管理器等等可以在Taskbar中看到多个窗体缩略图,如图:

          

      这样十分的影响用户体验,并且软件的其他窗口也可能被用户关掉,降低软件的用户体验。

    如何解决: 

      我们只需要将需要隐藏Alt+Tab窗体的  ShowInTaskbar 属性设置为 False,并且把该子窗体的Owner属性设置为对应的父窗体引用 即可

    <Window x:Class="Test.RevealModelFunctionMenu"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            mc:Ignorable="d"
            WindowStyle="None"
            BorderBrush="Transparent" 
            BorderThickness="0"
          ShowInTaskbar="False"
            AllowsTransparency="True"
            Background="Transparent"
            Title="FunctionMenu" Height="165" Width="420">

       来一张隐藏后的效果图:

        

    PS:

     1. WindowsFormsHost is always the most top from WPF element  

        

    According to MSDN (Layout Considerations for the WindowsFormsHost Element)

     A hosted Windows Forms control is drawn in a separate HWND, so it is always drawn on top of WPF elements.

    This is a design limitation

       2.   WindowsFormsHost 的布局注意事项

  • 相关阅读:
    Java并发编程:Lock
    java多线程中的生产者与消费者之等待唤醒机制@Version2.0
    java多线程中的生产者与消费者之等待唤醒机制@Version1.0
    vim 自动补全
    git 忽略文件的三种方式
    vim 查找整个工程
    vim 寄存器的使用
    我的vim插件列表
    web前端面试系列 一 js闭包
    web前端面试系列
  • 原文地址:https://www.cnblogs.com/u-drive/p/8260783.html
Copyright © 2011-2022 走看看