当前位置: 首页 > news >正文

WPF透明置顶窗口wine适配穿透问题解决

一、透明窗口全屏时,鼠标不穿透

问题描述

我有一个透明窗口,它是一个全屏置顶窗口,窗口里面有一个工具条,可以通过鼠标拖动工具条的位置,程序启动后,在不点击工具条的时候,鼠标是可以穿透的,当点击一次工具条后,在点击其余透明的地方,就不能穿透了

问题原因分析

通过排查,导致这个原因是窗口在初始化的时候设置了ResizeMode=“NoResize”,通过测试,设置为NoResize或者CanMinimize都存在问题

解决办法

办法1

取消窗口的ResizeMode设置或者显示设置为:CanResize或者CanResizeWithGrip

办法1遇到的问题

鼠标穿透已经没有问题了 ,但是在拖动工具条或者鼠标从工具条上经过的时候,控件呈现显示缓慢或者抖动的问题,体验很不好,重新将ResizeMode还原,则没有这个问题

办法2(正确办法)

窗口在初始化的时候,不设置ResizeMode参数,在窗口的Loaded事件里面在设置ResizeMode:

    public partial class MainWindow : Window{public MainWindow(){InitializeComponent();this.ResizeMode = ResizeMode.CanResize;this.Loaded+= OnLoaded;}private void OnLoaded(object sender, RoutedEventArgs e){this.ResizeMode = ResizeMode.NoResize;}}

通过这个方法设置后,既能解决鼠标穿透问题,也没有发现拖动问题。
备注:
WPF程序在其它一些设置也会导致初始化和Loaded事件呈现出的结果不一样,目前我已知的有着2个属性:

  • TopMost
  • ResizeMode

建议:如果需要调整这些属性,可以在Loaded事件里面再设置他们,这样可以避免一些千奇百怪的问题。

一、窗口最小化或者隐藏后,再显示后鼠标不穿透

问题描述

我有一个透明窗口,它是一个全屏置顶窗口,窗口里面有一个工具条,可以通过鼠标拖动工具条的位置,程序启动后,正常操作后,窗口穿透状态是正确的,但是当窗口最小化或者隐藏后,然后再显示后,出现了鼠标不穿透的问题。

问题原因分析

问题发现在重新显示窗口后

解决办法

目前暂时没有找到很好的解决这个问题的办法,只能采用迂回策略,在需要隐藏或者最小化窗口时,采用隐藏窗口下的控件来处理。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【探索LangGraph:构建多专家协作模型】
  • Eureka: Netflix开源的服务发现框架
  • 简谈设计模式之原型模式
  • conda install问题记录
  • 昇思25天学习打卡营第19天|应用实践之基于MobileNetv2的垃圾分类
  • Rust vs Go: 特点与应用场景分析
  • 音视频入门基础:H.264专题(12)——FFmpeg源码中通过SPS属性计算视频分辨率的实现
  • WPF设置全局样式
  • 学Java JVM:全面解析Java虚拟机
  • 人工智能算法工程师(中级)课程2-Opencv视觉处理之高级操作与代码详解
  • 基于STM32设计的药品柜温湿度监测系统(华为云IOT)(184)
  • Linux 命令集
  • 【ai】决策树
  • 关于魔兽世界服务器负载的资料、计算和思考
  • 修改ES索引名称
  • [Vue CLI 3] 配置解析之 css.extract
  • 【面试系列】之二:关于js原型
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Angular 响应式表单之下拉框
  • ECMAScript6(0):ES6简明参考手册
  • Git 使用集
  • jquery ajax学习笔记
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • ubuntu 下nginx安装 并支持https协议
  • windows下如何用phpstorm同步测试服务器
  • yii2权限控制rbac之rule详细讲解
  • 大快搜索数据爬虫技术实例安装教学篇
  • 如何胜任知名企业的商业数据分析师?
  • 收藏好这篇,别再只说“数据劫持”了
  • 一些css基础学习笔记
  • ionic异常记录
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 进程与线程(三)——进程/线程间通信
  • #大学#套接字
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (20)docke容器
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (推荐)叮当——中文语音对话机器人
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)shell调试方法
  • (转)VC++中ondraw在什么时候调用的
  • ... 是什么 ?... 有什么用处?
  • .NET C# 操作Neo4j图数据库
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .Net Remoting常用部署结构
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET和.COM和.CN域名区别
  • .net流程开发平台的一些难点(1)
  • .NET企业级应用架构设计系列之开场白
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • /bin、/sbin、/usr/bin、/usr/sbin
  • ??在JSP中,java和JavaScript如何交互?