У меня есть настольное приложение WPF C # и всплывающее диалоговое окно.Диалоговое окно имеет TextBox, на котором я хотел бы сфокусироваться, чтобы, как только оно всплывало, я мог что-то напечатать на нем, не двигая и не наводя курсор.
DialogBox пишется как класс в кодепозади (не XAML), который выглядит следующим образом:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
CustomDialog dlg = new CustomDialog();
dlg.ShowBox(); // after the dialog box pops up, focus on the textbox.
}
}
public partial class CustomDialog : Window
{
....
TextBox tb = new TextBox();
....
public void ShowBox()
{
....
/* I want to focus on the tb as soon as CustomDialog.ShowBox() is called */
....
}
}
Я пробовал все следующие, но ни один из них не работает:
1. tb.Focus();
2. Keyboard.Focus(tb);
3. FocusManager.SetIsFocusScope(tb, true);
4. Dispatcher.BeginInvoke((ThreadStart)delegate
{
tb.Focus();
});
[ОТВЕТ]
Перед отображением диалогового окна необходимо сфокусироваться:
tb.Focus();
window.ShowDialog();