it-swarm.com.ru

Как заставить фокус формы?

Как я могу заставить фокус формы? .Focus() не работает для меня.

private void button1_Click(object sender, EventArgs e) {
   var form = new loginForm();
    if (Application.OpenForms[form.Name] == null) {
           form.Show();
    } else {
         form.Focus();
    }
}

Что я делаю неправильно?

9
Jack

так должно быть 

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();
    }
}
8
Sebastian Piu

Сначала нужно показать форму - используйте метод Show() :

var form = new loginForm();
form.Show();

Правка: (обновленный вопрос)

Для существующей формы вызов Activate() может быть более подходящим, это также выводит форму на передний план:

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();
    }
}

Если форма свернута, вам нужно подписаться на событие Activated, чтобы изменить состояние окна на FormWindowState.Normal:

private void loginForm_Activated(object sender, EventArgs e)
{
    this.WindowState = FormWindowState.Normal;
}
14
BrokenGlass

Попробуй это:

this.BringToFront();
this.Activate();
10
Adriano Patricio

В начале формы мы добавляем
. .__ this.BringToFront (); .__ this.Activate ().

0
Don Agushi