【问题标题】:How to put the focus to a TextBox in OnNavigatedTo event?如何将焦点放在 OnNavigatedTo 事件中的 TextBox 上?
【发布时间】:2016-12-31 22:23:24
【问题描述】:

在 Windows 8 中,当导航页面时,我需要将焦点放在特定的 TextBox 上。

我用过:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    myControl.Focus(Windows.UI.Xaml.FocusState.Keyboard);
}

但它不起作用。但是,如果我从按钮单击事件中调用 myControl.Focus(Windows.UI.Xaml.FocusState.Keyboard);,它可以正常工作。

如何在页面加载时将焦点设置到 TextBox?

【问题讨论】:

    标签: c# xaml windows-runtime


    【解决方案1】:

    尝试拨打myControl.Focus(Windows.UI.Xaml.FocusState.Keyboard); this.Dispatcher

    代码示例:

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        Dispatcher.RunAsync(
            CoreDispatcherPriority.Normal,
            () => myControl.Focus(FocusState.Keyboard));
    }
    

    【讨论】:

    • 对我来说 myControl.Focus(Windows.UI.Xaml.FocusState.Keyboard) 通过在 Windows 8.1 上添加加载事件来工作
    【解决方案2】:

    试试这个:

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

    并将此 control(mycontrol) 设置为 XAML 代码中的第一个控件。

    【讨论】:

    • 欢迎来到stackoverflow。参加this 之旅,了解该网站的运作方式及其用途。考虑格式化你的答案。
    【解决方案3】:

    在 Windows Phone 8.1 上,向页面添加 Loaded 事件并在其中调用焦点而不是 OnNavigatedTo 事件

    private void Page_Loaded(object sender, RoutedEventArgs e)
    {
        SearchTextBox.Focus(FocusState.Keyboard);
    }
    

    【讨论】:

      【解决方案4】:

      我是通过在 TextBox 的 Loaded 事件中添加它来实现的:

      xaml:

      <TextBox x:Name="SearchTextBox" 
           Loaded="SearchTextBox_Loaded"/>
      

      在.cs后面的代码中:

      private void SearchTextBox_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
      {
          SearchTextBox.Focus(Windows.UI.Xaml.FocusState.Keyboard);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多