1

ページの OnNavigatedTo() イベントに次のコードがあります。

if (string.IsNullOrWhiteSpace(textBoxGroupName.Text))
{
    textBoxGroupName.Focus(FocusState.Programmatic);
}

...しかし、ページが表示されたときに textBoxGroupName にフォーカスがありません。なぜだめですか?

4

2 に答える 2

4

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">
于 2013-01-14T05:51:07.657 に答える
2

GroupBox コントロール内に含まれるコントロールのみを選択したり、フォーカスを受け取ることができます。GroupBox を正しく使用していないようです。

MSDNから

完全な 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);
}
于 2013-01-14T05:45:35.107 に答える