2017-02-10 24 views
2

マウスイベントで、TextBoxを作成してGridに追加し、すべてを選択してフォーカスキーボードを選択しようとしています。しかし、それは働いて得ることができません。WPFでTextBoxフォーカスが問題になる

private void timeCodeEdit(object sender, MouseEventArgs e) 
{ 
    Grid grid = (Grid) ((Label) sender).Parent; 
    TextBox text = new TextBox(); 
    text.Margin = new Thickness(0, 0, 75, 0); 
    text.Text = "aaaa"; 
    grid.Children.Add(text); 
    text.LostFocus += lostFocus; 
    Keyboard.Focus(text); 
    text.SelectAll(); 
} 

私はKeyboard.Focus(text);text.Focus();を試してみました。私はこれを行う場合:

private void lostFocus(object sender, RoutedEventArgs e) 
{ 
    Keyboard.Focus(sender as TextBox); 
    e.Handled = true; 
} 

私はStackOverflowExceptionを取得しています、フォーカスの直後にフォーカスが失われています。

誰かがこれについて私を助けることができますか?

text.LostKeyboardFocus += Text_LostKeyboardFocus; 

と::私は答え投稿します

+0

「FocusManager.SetFocusedElement(parentElement、txtBoxName)」を試してください。 – Gopichandar

+0

私は試しましたが、役に立たなかった – Tom1410

+0

あなたのコードはうまく動作します。テキストボックスにフォーカスがあり、私はそれに直接入力することができます。私は 'MouseEnter'と 'MouseLeftButtonDown'イベントを試みました。どのような.NETフレームワークを使用していますか? – AjS

答えて

1

private void Text_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) 
{ 
    var name = ((FrameworkElement)e.NewFocus).Name; 
    Console.Write(name); 
} 

は私ScrollViewerのがフォーカスを取得していることを見つける助け、そうScrollViewerのためのFocusable="False"は、問題を解決しました。

関連する問題