C#让TopMost窗体弹出并置顶层但不获取当前输入焦点的终极办法
2021-05-04 09:28
标签:params ret 避免 默认 tar prot code pre most 为了使程序在弹出窗口时置顶层且不获取系统输入焦点,避免影响用户当前的操作,来电通来电弹屏软件尝试过N多种办法,例如:弹出前保存当前焦点窗口句柄,弹出时因为使用TopMost系统默认将焦点交给了弹出窗口,弹出后再将焦点还给弹出前的焦点窗口句柄(C#让窗体置顶弹出但不获取焦点)。这种方法貌似解决了问题,但是在弹出的时候还是会打断用户的部分操作。经过我们的不断探索和尝试,终于在Form底层取得了突破,效果很好,和qq的弹窗一样不会打扰用户操作。 C#让TopMost窗体弹出并置顶层但不获取当前输入焦点的终极办法 标签:params ret 避免 默认 tar prot code pre most 原文地址:http://www.cnblogs.com/Red-ButterFly/p/7722037.html 1 //声明常量:(释义可参见windows API)
2
3 const int WS_EX_NOACTIVATE = 0x08000000;
4
5 //重载Form的CreateParams属性,添加不获取焦点属性值。
6
7 protected override CreateParams CreateParams
8
9 {
10
11 get
12
13 {
14
15 CreateParams cp = base.CreateParams;
16
17 cp.ExStyle |= WS_EX_NOACTIVATE;
18
19 return cp;
20
21 }
22
23 }
文章标题:C#让TopMost窗体弹出并置顶层但不获取当前输入焦点的终极办法
文章链接:http://soscw.com/index.php/essay/82207.html