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

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

10 голосов
/ 11 декабря 2011

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

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

Что я делаю не так?

Ответы [ 4 ]

15 голосов
/ 11 декабря 2011

Сначала нужно показать форму - используйте метод 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;
}
11 голосов
/ 25 ноября 2016

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

this.BringToFront();
this.Activate();
8 голосов
/ 11 декабря 2011

должно быть

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();
    }
}
0 голосов
/ 02 сентября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...