execl窗体如何重新获得焦点呢?我们常常很关心这个问题,现在就让我们一起来看一看。
工具/原料
execl
电脑
方法/步骤
1、当vba程序在弹出的模式窗口背后操作表格时,窗口就会明显的失去焦点,这时候要是在窗口里点击按钮时,需要点击两次,可能是失去焦点所致。如何让窗口重获焦点?这正是我们要探讨的问题。
2、我们可以有如下做法://找到窗口属性 LONGdwNewLong=GetWindowLong(hWndMain,GWL_EXSTYLE); //隐藏窗口 dwNewLong|=WS_EX_TRANSPARENT|WS_EX_LAYERED; SetWindowLong(hWndMain,GWL_EXSTYLE,dwNewLong); //显示窗口 //dwNewLong^=WS_EX_TRANSPARENT|WS_EX_LAYERED; //SetWindowLong(hWndMain,GWL_EXSTYLE,dwNewLong);
3、上述原理是将hWndMain窗口屏蔽掉鼠标和键盘的响应,但是保留在桌面最底层,相当于嵌入了桌面,如果再次调用显示窗口的函数可将其激活
4、如何让窗口获得焦点?在自己的form的deactive事件发生时用setwindowpos重新定位就可以了。
5、而当C#winform的窗体失去焦点之后,再次从新获得焦点事件失效是因为用Deactivate事件可以执行窗体被停用时的程序,此时窗体可能被最小化了,或者被其他文件夹挡住了,这个窗体并没有最小化。
6、另外还可以修改控件的tabindex属性,根据数字顺序依次排列就好了。至于是否要跳开某个控件,则是关闭那个控件的tabstop属性就好了(改了false则跳过)
7、以上就是execl窗体如何重新获得焦点的全部内容了,希望能对你们有所帮助,谢谢!!