none
metro style app中我想实现点击某个canvas,TextBox自动获取焦点 RRS feed

  • 问题

  •  

    我使用了如下方法去获得焦点,但是居然失败了.

    private void Canvas_PointerPressed_1(object sender, PointerRoutedEventArgs e)
            {
                t3.Focus(FocusState.Keyboard);
            }

    用同样的方法, 

    我放了一个button 在click事件中加入了获取焦点的代码, 那样却成功了.

    比较费解啊.

    2012年7月4日 6:54

答案

  • 其实原因很简单,PointerPressed的时候确实把焦点设置到了t3上,但是我们在PointerReleased的时候又将焦点弄回来了。 而Button的Click事件的顺序就不同了,他是在PointerReleased后再被调用所以你可以成功转移焦点。

    一个想法你可以考虑是否可以采纳:

    通过实现 PointerReleased 事件,在其中设置焦点,然后将路由事件打断:

            private void Canvas_PointerReleased_1(object sender, PointerRoutedEventArgs e)
            {
                t3.Focus(FocusState.Keyboard);
                e.Handled = true;
            }


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

    2012年7月5日 10:11
    版主