[英]How to focus a TextBox in a custom Dialog box
我有一個WPF C#桌面應用程序,並彈出一個自定義對話框窗口。 對話框窗口有一個我要重點關注的文本框,因此,一旦彈出該對話框,我就可以在其中輸入內容而無需移動和指向光標。
對話框是用后面的代碼(不是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();
您可以覆蓋OnLoaded事件,並在其中聚焦文本框:
protected override void OnLoad(EventArgs e)
{
base.OnLoad();
tb.Focus();
tb.SelectAll();
}
文本框未聚焦,因為尚未呈現Window的內容。 嘗試使用CustomDialog類的Loaded事件使文本框集中。 將事件處理方法連接到Loaded事件,然后在該方法中聚焦文本框。
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();
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.