none
如何使RichEditBox获取焦点? RRS feed

  • 问题

  • 我在metro下做一个聊天程序,需要用到RichEditBox获取输入文本,但是每次点击发送后RichEditBox都会失去焦点,如何使它获取焦点呢?我试了RichEditBox.Focus(...);函数,不行。
    2012年7月30日 8:53

答案

  • WebView阻止了焦点移动到RichEditBox, 仍旧被WebView抢回去了。 所以你试试

    webview.NavigateToString("Hello  World!");
    webview.LoadCompleted += (o, er) =>
    {
        reb.Document.SetText(TextSetOptions.None, "");
        reb.Focus(Windows.UI.Xaml.FocusState.Keyboard);
    };

    在LoadCompleted 事件中处理焦点

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

    • 已标记为答案 Yimin.Xu 2012年8月3日 1:10
    2012年8月1日 6:43
    版主

全部回复

  • RichEditBox.Focus(Windows.UI.Xaml.FocusState.Keyboard); 没有问题啊。我在Send按钮的Click Handler中最后写上这一句。

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


    2012年7月31日 6:22
    版主
  • 我用

     private  void SendMsg_Click(object sender, RoutedEventArgs e)
       {

    RichEditBox.Document.SetText(TextSetOptions.None, ""); 

    RichEditBox.Focus(Windows.UI.Xaml.FocusState.Keyboard);

    }

    为什么不行呢?你可以把你的代码贴出来看一下吗?多谢!



    • 已编辑 Yimin.Xu 2012年7月31日 9:11
    2012年7月31日 9:08
  • 我的代码就一行, 比你少了 SetText。

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

    2012年7月31日 9:21
    版主
  • 代码中有一句忘了加了:       

    private  void SendMsg_Click(object sender, RoutedEventArgs e)
       {

           MsgWebView.NavigateToString("Hello  World!");

             RichEditBox.Document.SetText(TextSetOptions.None, ""); 

              RichEditBox.Focus(Windows.UI.Xaml.FocusState.Keyboard);

    }

    我重新写过代码测试过,加了WebView.NavigateToString函数就不行了。

    我也试过用下面的方法:

    private async void SendMsg_Click(object sender, RoutedEventArgs e)
       {

           MsgWebView.NavigateToString("Hello  World!");

             RichEditBox.Document.SetText(TextSetOptions.None, ""); 

              await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
               {
                    SendBox.Focus(Windows.UI.Xaml.FocusState.Programmatic);
               });

    }

    发现程序中控件比较多时焦点还是不能回到RichEditBox上来。

    如果用RichEditBox_LostFocus函数强制失去焦点的时候重新获得焦点则会使程序无法进行其他的事情。

    希望Bob版主可以再关注一下


    • 已编辑 Yimin.Xu 2012年8月1日 1:58
    2012年8月1日 0:55
  • WebView阻止了焦点移动到RichEditBox, 仍旧被WebView抢回去了。 所以你试试

    webview.NavigateToString("Hello  World!");
    webview.LoadCompleted += (o, er) =>
    {
        reb.Document.SetText(TextSetOptions.None, "");
        reb.Focus(Windows.UI.Xaml.FocusState.Keyboard);
    };

    在LoadCompleted 事件中处理焦点

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

    • 已标记为答案 Yimin.Xu 2012年8月3日 1:10
    2012年8月1日 6:43
    版主
  • Thanks,Bob.
    2012年8月3日 1:11