none
求助 关于FOCUS焦点的问题 RRS feed

  • 问题

  • BOb和各位大哥好

    小弟碰到个问题,在TAB切换控件焦点的时候,如果当前页面FRAME是套在别的PAGE里,会出现焦点跳转到该FRAME所在的PAGE里 。

    能不能实现这么一个需求:截获FOCUS事件,使其焦点跳转仅停留在当前FRAME内。 我试着监听当前FRAME的LOSTFOCUSE事件,并在事件里调用focus()方法使其重新获取焦点,不过失败了,因为我无法得知焦点什么时候离开FRAME 。

    请各位高手不吝赐教 小弟万分感激。

    2012年9月18日 13:31

全部回复

  • 我探索了一下,找到了一种方法。

    添加一个高宽都是0的BUTTON在页面底部,将其TABINDEX设为TABINDEX所能接受的最大值,监听该BUTTON的LOSTFOCUS方法。

    当该BUTTON失去焦点时,即可知道焦点已经离开当前页面 。

    则可以在该方法中调用THIS.FRAME.FOCUS(FOCUSSTAE.KEYBOARD)时页面重新获得焦点,这样即可实现将焦点锁在当前FRAME。

    不知道这样的做法有没有隐患,或者有没有比较优雅的做法,诸位高手给点意见呗~

    2012年9月19日 3:43
  • 不如直接在内部Frame的GotFocus 中处理。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年9月20日 3:55
    版主
  • 我也尝试过监听内部FRAME的GotFocus 和LosFocust啊  但是每次FRAME内部的控件获得或者丢失焦点时,事件也会传播到FRAME上。 这是不是跟路由事件有关0 0

    2012年9月20日 6:47
  • 焦点本身 具有传递性,只有父Frame有了焦点,它里面的元素才会能有焦点,当然不能拿到焦点但是他会触发GotFocus事件。所以他的焦点获得顺序是只要里面的元素获得骄傲点,Frame也会触发GotForcus。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年9月20日 6:53
    版主
  • 嗯  可能是我没描述清楚  不过我希望达到的目的是把焦点锁定在FRAME内,当焦点离开FRAME后将调用Frame.Focus方法使焦点重新回到FRAME上 。

    但是焦点在FRAME内的控件上跳转的时候也会触发FRAME的GetFocus与LostFocus事件的,这样子我就没办法获知FRAME的LostFocus事件与GetFocus事件产生的时候焦点是在FRAME内部,还是将要离开FRAME了。

    也就是说我无法把握住要将焦点重新定位在FRAME上的时机 0 0.


    2012年9月20日 7:01