none
Передача фокуса ввода форме. RRS feed

  • Вопрос

  • Нужно по сигналу передать фокус ввода главной форме приложения. Пока в обработчике нужного события это делаю так:
    Visible = false;
    WindowState = FormWindowState.Minimized;
    Visible = true;
    WindowState = FormWindowState.Normal;
    Но может есть попроще путь?
    • Перемещено I.Vorontsov 12 января 2010 г. 7:47 (От:Visual C#)
    • Перемещено SachinW 1 октября 2010 г. 21:50 MSDN Forums Consolidation (От:Начинающие разработчики)
    24 декабря 2009 г. 6:33

Ответы

  • Думаю так, если правильно понял что надо сдедать:

                Form1 form1 = (Form1)Application.OpenForms[0];
                form1.Focus();


    При таком способе форма выходит поверх остальных окон, только если она была свёрнута на панель задач, если закрыта другим окном, то нет.

    Про мой вопрос.
    Я просто думал что можно избавиться от "выпрыгивания формы" с панели задач. Сей- час посмотрел Word себя так же ведёт. Так что ладно.
    25 декабря 2009 г. 13:23

Все ответы

  • this.Focus();
    24 декабря 2009 г. 7:56
  • Это не то. Есть несколько запущенных экземпляров приложения. Когда пользователь пытается открыть файл который открыт в другом экземпляре приложения, тот другой экземпляр выходит поверх других окон с фокусом ввода. Пока есть только такая реализация.
    24 декабря 2009 г. 12:45
  • Думаю так, если правильно понял что надо сдедать:

                Form1 form1 = (Form1)Application.OpenForms[0];
                form1.Focus();

    25 декабря 2009 г. 9:42
  • Думаю так, если правильно понял что надо сдедать:

                Form1 form1 = (Form1)Application.OpenForms[0];
                form1.Focus();


    При таком способе форма выходит поверх остальных окон, только если она была свёрнута на панель задач, если закрыта другим окном, то нет.

    Про мой вопрос.
    Я просто думал что можно избавиться от "выпрыгивания формы" с панели задач. Сей- час посмотрел Word себя так же ведёт. Так что ладно.
    25 декабря 2009 г. 13:23
  • Для активации окна другого приложения нужно использовать API функцию:

            [DllImport("user32.dll")]
            static extern int SetForegroundWindow(IntPtr handle);
    
    25 декабря 2009 г. 17:51
  • используйте тогда API
    25 декабря 2009 г. 18:34