ページの OnNavigatedTo() イベントに次のコードがあります。
if (string.IsNullOrWhiteSpace(textBoxGroupName.Text))
{
textBoxGroupName.Focus(FocusState.Programmatic);
}
...しかし、ページが表示されたときに textBoxGroupName にフォーカスがありません。なぜだめですか?
ページの 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 を正しく使用していないようです。
完全な GroupBox 自体を選択したり、フォーカスを受け取ったりすることはできません。このコントロールが Focus および Select メソッドにどのように応答するかについて詳しくは、次の Control メンバーを参照してください: 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);
}