C#让TopMost窗体弹出并置顶层但不获取当前输入焦点的终极办法
生活随笔
收集整理的這篇文章主要介紹了
C#让TopMost窗体弹出并置顶层但不获取当前输入焦点的终极办法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
為了使程序在彈出窗口時(shí)置頂層且不獲取系統(tǒng)輸入焦點(diǎn),避免影響用戶當(dāng)前的操作,來(lái)電通來(lái)電彈屏軟件嘗試過(guò)N多種辦法,例如:彈出前保存當(dāng)前焦點(diǎn)窗口句柄,彈出時(shí)因?yàn)槭褂肨opMost系統(tǒng)默認(rèn)將焦點(diǎn)交給了彈出窗口,彈出后再將焦點(diǎn)還給彈出前的焦點(diǎn)窗口句柄(C#讓窗體置頂彈出但不獲取焦點(diǎn))。這種方法貌似解決了問(wèn)題,但是在彈出的時(shí)候還是會(huì)打斷用戶的部分操作。經(jīng)過(guò)我們的不斷探索和嘗試,終于在Form底層取得了突破,效果很好,和qq的彈窗一樣不會(huì)打擾用戶操作。
?
//聲明常量:(釋義可參見(jiàn)windows API)const int WS_EX_NOACTIVATE = 0x08000000;//重載Form的CreateParams屬性,添加不獲取焦點(diǎn)屬性值。protected override CreateParams CreateParams{get{ CreateParams cp = base.CreateParams;cp.ExStyle |= WS_EX_NOACTIVATE;return cp;}}?
轉(zhuǎn)載于:https://www.cnblogs.com/DoNetCShap/p/4442288.html
總結(jié)
以上是生活随笔為你收集整理的C#让TopMost窗体弹出并置顶层但不获取当前输入焦点的终极办法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: xmind 8 update8(pro)
- 下一篇: C#中对泛型List进行分组输出元素