簡體   English   中英

如何在自定義對話框中聚焦文本框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM