Я протестировал приведенный ниже код, используя таймер в форме form1, чтобы создать экземпляр и показать form2 с form1 в качестве владельца.
В событии Shown формы 2 я затем установил фокус на владельца, который является текущей активной формой.
У меня есть текстовое поле в форме form1, и я смог непрерывно писать в текстовом поле, не теряя фокус во время этого процесса.
Мой код таймера в форме 1:
private void timer1_Tick(object sender, EventArgs e)
{
Form2 popup = new Form2();
popup.TopMost = true;
popup.Show(this);
timer1.Enabled = false;
}
Мой код в показанном событии формы 2:
private void Form2_Shown(object sender, EventArgs e)
{
this.Owner.Focus();
}
Вы можете сделать это или просто установить TopMost в значение false и использовать переопределение ShowWithoutActivation, как указано Гансом Пассантом.
Редактировать: (Или использовать p / invoke, как видно из дополнительного комментария Ганса Пассанта, который я пропустил, когда писал это)