欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

C#让TopMost窗体弹出并置顶层但不获取当前输入焦点的终极办法

发布时间:2023/12/13 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C#让TopMost窗体弹出并置顶层但不获取当前输入焦点的终极办法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

为了使程序在弹出窗口时置顶层且不获取系统输入焦点,避免影响用户当前的操作,来电通来电弹屏软件尝试过N多种办法,例如:弹出前保存当前焦点窗口句柄,弹出时因为使用TopMost系统默认将焦点交给了弹出窗口,弹出后再将焦点还给弹出前的焦点窗口句柄(C#让窗体置顶弹出但不获取焦点)。这种方法貌似解决了问题,但是在弹出的时候还是会打断用户的部分操作。经过我们的不断探索和尝试,终于在Form底层取得了突破,效果很好,和qq的弹窗一样不会打扰用户操作。

 

//声明常量:(释义可参见windows API)const int WS_EX_NOACTIVATE = 0x08000000;//重载Form的CreateParams属性,添加不获取焦点属性值。protected override CreateParams CreateParams{get{ CreateParams cp = base.CreateParams;cp.ExStyle |= WS_EX_NOACTIVATE;return cp;}}

 

转载于:https://www.cnblogs.com/DoNetCShap/p/4442288.html

总结

以上是生活随笔为你收集整理的C#让TopMost窗体弹出并置顶层但不获取当前输入焦点的终极办法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。