WPF C#デスクトップアプリケーションがあり、カスタムダイアログウィンドウがポップアップします。ダイアログウィンドウには、私がフォーカスしたいと思っているTextBoxがあります。ポップアップすると、移動してカーソルをポイントすることなく何かを入力することができます。TextBoxをカスタムダイアログボックスにフォーカスする方法
ダイアログボックスがこのように書き背後にあるコードでクラス(ない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();
});
[ANSWER]
がダイアログを表示する前に注力する必要があります。
tb.Focus();
window.ShowDialog();
tb.UpdateLayout(); tb.Focus();これを試してください – Damith
UIのテキストボックスを確認できますか? –
いいえ、動作しません。 – KMC