none
winform中激活弹出窗口 RRS feed

  • 问题

  • 利用SetForegroundWindow方法,把弹出的窗口激活,但是在窗口还没有完全加载好的时候,连续点击其他地方,这个时候感觉SetForegroundWindow这个方法没起作用。

    我是OnShown这个方法里加入激活窗口的方法的,在正常点击下没有任何问题,就是在连续多次后会发生激活窗口没有在最前面了。有什么办法可以避免吗?

    2010年12月2日 5:44

答案

  • 嗯。这个是有可能的,比如 SetForegroundWindow 执行完返回后,键盘焦点到另一个可以获取焦点的地方,如 TextBox,这时,刚刚设置好并且还没有来得及被 ShowWindow 的那个窗体就不是最前端窗体了。

    By Design 的设计回导致这个问题。解决的方法一是在 Form Load / Show 时禁用掉它,二是可以考虑把需要弹出的窗体 TopMost。


    Mark Zhou
    2010年12月2日 10:01

全部回复

  • dear
    试试用别的事件,例如像Load,Leave

    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2010年12月2日 9:12
  • 嗯。这个是有可能的,比如 SetForegroundWindow 执行完返回后,键盘焦点到另一个可以获取焦点的地方,如 TextBox,这时,刚刚设置好并且还没有来得及被 ShowWindow 的那个窗体就不是最前端窗体了。

    By Design 的设计回导致这个问题。解决的方法一是在 Form Load / Show 时禁用掉它,二是可以考虑把需要弹出的窗体 TopMost。


    Mark Zhou
    2010年12月2日 10:01