WPF主窗体调用 User32的SetWindowPos 设置窗体置顶会导致与其他窗体抢夺焦点的问题
最近发现:自己开发的窗体应用,在二级弹窗或者提示框弹出的时候,交替点击窗体和窗体外(相当于窗体交替的获取焦点和失去焦点),都会导致其他的应用一闪一闪的。

经过排查,是由于该窗体由于部分因素考虑,用了 SetWindowPos 来替代 Topmost用于主窗体的置顶
[DllImport("user32.dll", SetLastError = true)]
        public static extern bool SetWindowPos(IntPtr hwnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
去除掉调用改user32的SetWindowPos ,修改回来用Topmost置顶窗体,恢复正常。

总结:对于一些常用的设置,用WPF自带的属性尽量用自带的属性。对于一些User32或者一些非安全代码,定位问题,需要花费很大的时间
WPF主窗体调用 User32的SetWindowPos 设置窗体置顶会导致与其他窗体抢夺焦点的问题的更多相关文章
- C#(winform)设置窗口置顶
		
只要设置窗体的TopMost属性即可: registerForm.TopMost = true;
 - VC 窗口置顶并激活为当前窗体
		
转载请注明来源:https://www.cnblogs.com/hookjc/ if (this != GetForegroundWindow()) ...
 - WinForm SetWindowPos窗口置顶使用说明
		
就是有时候窗口不能够成功置顶,这时需要重新切换下标签,就可以置顶了,本文介绍C# SetWindowPos实现窗口置顶的方法: [DllImport("user32.dll", C ...
 - wpf 子窗体调用主窗体中函数的实现
		
子窗体(Win_Set): MainWindow m; m = (MainWindow)this.Owner; m.showText(&qu ...
 - WPF 委托 事件 B窗体调用A窗体方法
		
原文:WPF 委托 事件 B窗体调用A窗体方法 具体实现 A窗体 中加载B窗体 B窗体触发A窗体里的方法 当点击B窗体确定Button事件 给A窗体俩个TextBox赋值 并关闭B窗体 B窗体 ...
 - C#或者WPF中让某个窗体置顶
		
原文:C#或者WPF中让某个窗体置顶 前记:在工作中有个需求,要求不管到那个界面,我必须让一个浮动条(其实是个窗体)置顶. 我用wpf,因为有之前有好几个界面已经设置成topmost了,所以在这几个界 ...
 - Creating Dialogbased Windows Application (3) / 创建基于对话框的Windows应用程序(三)Checkbox的应用、窗体置顶、设置图标 / VC++, Windows
		
创建基于对话框的Windows应用程序(三) —— Checkbox的应用.窗体置顶.设置图标 上一节创建的窗体应用程序中,我们用到了Button和StaticText这两个控件.这一节中我们将学习使 ...
 - WPF:窗体置顶
		
1.设置窗体TopMost属性 private DispatcherTimer timer; public Window1() { InitializeComponent(); Loaded += n ...
 - C# WPF 一直保持多个Topmost窗体的置顶顺序
		
原文:C# WPF 一直保持多个Topmost窗体的置顶顺序 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37862405/article/ ...
 
随机推荐
- 向sqlserver 数据库插入emoji 表情包
			
1.emoji 属于特殊字符 所以我们必须使用utf-8 的编码格式进行保存 不过好在sqlserver 默认支持utf-8 2.将需要存储emoji的字段必须设置为nvarchar 类型 因为v ...
 - Three.js 打造缤纷夏日3D梦中情岛 🌊
			
声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 背景 深居内陆的人们,大概每个人都有过大海之梦吧.夏日傍晚在沙滩漫步奔跑:或是在 ...
 - [BZOJ5449] 序列
			
题目链接:序列 Description 给定一个\(1\)~\(n\)的排列x,每次你可以将 \(x_1, x_2, ..., x_i\) 翻转. 你需要求出将序列变为升序的最小操作次数. 多组数据. ...
 - Vulhub靶场搭建教程
			
Vulhub靶机环境搭建 Vulhub地址: Vulhub下载地址 一.所需环境 1.Ubuntu16.04 2.最新版本Docker 二.安装之路 1.下载Ubuntu16.04下载地址(迅雷下载6 ...
 - Redis中的原子操作(2)-redis中使用Lua脚本保证命令原子性
			
Redis 如何应对并发访问 使用 Lua 脚本 Redis 中如何使用 Lua 脚本 EVAL EVALSHA SCRIPT 命令 SCRIPT LOAD SCRIPT EXISTS SCRIPT ...
 - 内网 Ubuntu 20.04 搭建 docusaurus 项目(或前端项目)的环境(mobaxterm、tigervnc、nfs、node)
			
内网 Ubuntu 20.04 搭建 docusaurus 项目(或前端项目)的环境 背景 内网开发机是 win7,只能安装 node 14 以下,而 spug 的文档项目采用的是 Facebook ...
 - 开发工具-SSMS官方下载地址
			
更新记录 2022年6月10日 完善标题. SQL Server Management Studio官方下载地址 https://docs.microsoft.com/en-us/sql/ssms/d ...
 - 【RocketMQ】NameServer的启动
			
NameServer是一个注册中心,Broker在启动时向所有的NameServer注册,生产者Producer和消费者Consumer可以从NameServer中获取所有注册的Broker列表,并从 ...
 - REST类型网址调用
			
by zyi
 - 11.4 Android Studio如何设置代理
			
有些网络环境下,Android Studio下载无法下载依赖,这个时候就要配置代理,至于代理的问题,大家要自己解决. 获取代理信息 一般要获取如下信息: 地址:可以是域名和IP 端口: 代理类型:常用 ...