为什么在OnNavigatedTo()事件中设置焦点不设置焦点?
本文关键字:设置 焦点 事件 OnNavigatedTo 为什么 | 更新日期: 2023-09-27 17:52:41
我在一个页面的OnNavigatedTo()事件中得到了这个代码:
if (string.IsNullOrWhiteSpace(textBoxGroupName.Text))
{
textBoxGroupName.Focus(FocusState.Programmatic);
}
…但是textBoxGroupName在页面显示时没有焦点。为什么不呢?
OnNavigatedTo
发生在页面生命周期的早期,用于设置焦点工作。您应该调用Loaded
事件中的代码:
private void MainPage_OnLoaded(object sender, RoutedEventArgs e)
{
if (string.IsNullOrWhiteSpace(textBoxGroupName.Text))
{
textBoxGroupName.Focus(FocusState.Programmatic);
}
}
当然,您需要在.xaml
文件中设置处理程序(我省略了Page
元素中的其他属性:
<Page
Loaded="MainPage_OnLoaded">
只有包含在GroupBox控件中的控件可以被选择或接收焦点。似乎你没有正确使用GroupBox。
从MSDN完整的GroupBox本身不能被选择或接收焦点。有关此控件如何响应Focus和Select方法的更多信息,请参阅以下控件成员:CanFocus, CanSelect, Focused, ContainsFocus, Focus, Select。
提示:
你可能想使用Controls属性来访问子控件:
if (string.IsNullOrWhiteSpace(textBoxGroupName.Text))
{
var child_TextBox = textBoxGroupName.Controls["myTextBox"]
if(child_TextBox.CanFocus)
child_TextBox.Focus(FocusState.Programmatic);
}