Reputation: 16724
How can I force the focus of an form? .Focus()
is not working for me.
private void button1_Click(object sender, EventArgs e) {
var form = new loginForm();
if (Application.OpenForms[form.Name] == null) {
form.Show();
} else {
form.Focus();
}
}
What am I doing wrong?
Upvotes: 15
Views: 83790
Reputation: 11
None of the previous answers worked for me, but this does:
protected override void OnShown(EventArgs e)
{
Focus();
}
None of the focusing methods worked if called before this event. Hope it helps.
Upvotes: 1
Reputation: 21
On start of the form we add
this.BringToFront();
this.Activate();
Upvotes: 0
Reputation: 160852
You need to show the form first - use the Show()
method:
var form = new loginForm();
form.Show();
Edit: (updated question)
For an existing form calling Activate()
might be more appropriate, this also brings the form to the front:
private void button1_Click(object sender, EventArgs e)
{
var form = new loginForm();
if (Application.OpenForms[form.Name] == null)
{
form.Show();
}
else
{
Application.OpenForms[form.Name].Activate();
}
}
If the form is minimized you need to subscribe to the Activated
event to change your window state to FormWindowState.Normal
:
private void loginForm_Activated(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Normal;
}
Upvotes: 17
Reputation: 8008
it should be
private void button1_Click(object sender, EventArgs e) {
var form = new loginForm();
if (Application.OpenForms[form.Name] == null) {
form.Show();
} else {
Application.OpenForms[form.Name].Focus();
}
}
Upvotes: 11