AustinT
AustinT

Reputation: 2036

Windows C# Form: Prompt focus on a textbox

I was wondering how would I auto select a textbox when using a Prompt on windows form. My code below shows what I have tried, but it is still focusing on the button and not the textbox. Thank you in advance for the help and assistance.

            Form prompt = new Form();
            prompt.Width = 500;
            prompt.Height = 200;
            prompt.Text = caption;
            Label textLabel = new Label() { Left = 50, Top = 20, Text = text };
            TextBox textBox = new TextBox() { Left = 50, Top = 50, Width = 400 };
            Button confirmation = new Button() { Text = "Ok", Left = 50, Width = 100, Top = 90 };
            confirmation.Click += (sender, e) => { prompt.Close(); };
            textBox.Select();
            textBox.Focus();
            prompt.Controls.Add(confirmation);
            prompt.Controls.Add(textLabel);
            prompt.Controls.Add(textBox);
            prompt.ShowDialog();
            return textBox.Text;

Upvotes: 2

Views: 1167

Answers (1)

Servy
Servy

Reputation: 203824

You need to wait to focus the textbox until after the form is shown. Before the form has been shown for the first time it is not able to focus anything. You can use the Shown event to execute some code after the form is first shown.

string text = "Text";
string caption = "caption";
Form prompt = new Form();
prompt.Width = 500;
prompt.Height = 200;
prompt.Text = caption;
Label textLabel = new Label() { Left = 50, Top = 20, Text = text };
TextBox textBox = new TextBox() { Left = 50, Top = 50, Width = 400 };
Button confirmation = new Button() { Text = "Ok", Left = 50, Width = 100, Top = 90 };
confirmation.Click += (s, e) => { prompt.Close(); };
prompt.Controls.Add(confirmation);
prompt.Controls.Add(textLabel);
prompt.Controls.Add(textBox);
prompt.Shown += (s, e) => textBox.Focus();
prompt.ShowDialog();
return textBox.Text;

Upvotes: 5

Related Questions