Я пытался написать небольшое приложение с собственными опциями Windows. Когда я пытаюсь запустить окно, я не могу сосредоточиться на новой форме. Это не форма mdi, а просто новая форма, которую я создаю, когда пользователь выбирает опцию в меню. Следует отметить, что Form.Show возвращает false, что означает, что новая форма никогда не получает фокус.
Я пробовал несколько способов загрузки формы, но все не удалось:
Из формы вызова:
ServerForm SF = new ServerForm(ref DataLoader, false);
SF.Show();
SF.Focus();
// Fails
Внутри самой формы:
this.Show();
this.BringToFront();
this.Activate();
this.TopMost = true;
// Fails
Выбор формы для выбора:
this.SetStyle(System.Windows.Forms.ControlStyles.Selectable, true);
...
ServerForm SF = new ServerForm(ref DataLoader, false);
SF.Show();
SF.Focus();
// Fails
Использование старого API:
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int ShowWindow(IntPtr handle, int nCmdShow);
ServerForm SF = new ServerForm(ref DataLoader, false);
ShowWindow(SF.Handle, 3);
SF.Show();
SF.Focus();
// Fails
Переход в родительский
ServerForm SF = new ServerForm(ref DataLoader, false);
SF.Show(this);
SF.Focus();
// Fails
Во всех этих случаях форма будет отображаться, но созданная форма все еще будет фокусироваться на новой форме. Это происходит даже тогда, когда я отключаю старую форму перед созданием новой формы.
Есть предложения?