C# 如何在自定义对话框中聚焦文本框
我有一个WPF C#桌面应用程序,并弹出一个自定义对话框窗口。对话框窗口有一个我想关注的文本框,所以一旦它弹出,我就可以在其中键入内容,而无需移动和指向光标 对话框在代码隐藏(而不是XAML)中作为类编写,如下所示:C# 如何在自定义对话框中聚焦文本框,c#,wpf,focus,C#,Wpf,Focus,我有一个WPF C#桌面应用程序,并弹出一个自定义对话框窗口。对话框窗口有一个我想关注的文本框,所以一旦它弹出,我就可以在其中键入内容,而无需移动和指向光标 对话框在代码隐藏(而不是XAML)中作为类编写,如下所示: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); CustomDialog dlg = new Custo
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();
您可以覆盖已加载的事件,并将文本框集中在其中:
protected override void OnLoad(EventArgs e)
{
base.OnLoad();
tb.Focus();
tb.SelectAll();
}
文本框未聚焦,因为窗口的内容尚未渲染。尝试使用CustomDialog类的已加载事件聚焦文本框。将事件处理方法连接到加载的事件,并在该方法中聚焦文本框
public partial class CustomDialog : Window
{
....
TextBox tb = new TextBox();
....
public void ShowBox()
{
....
this.Loaded += CustomDialog_Loaded;
....
}
}
void CustomDialog_Loaded(object sender, RoutedEventArgs e)
{
tb.Focus();
}
我只是想补充一点,我试图在弹出对话框中“聚焦”一个文本框,但它不起作用。 在调用Form.ShowDialog()之前,我试图聚焦该框 上述措施都不起作用 以下是对我有效的方法:
//add textBox to form
myForm.Controls.Add(myTextBox);
//now select the textbox
myTextBox.Select();
//display the form
myForm.ShowDialog();
希望这有帮助 tb.UpdateLayout();tb.Focus();试试这个你能在UI中看到文本框吗?当然我能看到文本框simple
tb.Focus()
适合我。能否向我们展示创建TB并将其添加到window+XAML中的代码?@Faciu:dialog box类中有on-OnLoad事件。