Как написал другой пользователь, один из моих любимых способов - установить владельца форм. Делая это, дочерняя форма всегда будет располагаться поверх родительской формы, когда любая форма сфокусирована, активирована и т. Д. Что приятно в этом, так это то, что вам не нужно перехватывать какие-либо специальные события и выполнять какой-либо специальный код. Предположим, у вас есть основная форма frmMain и всплывающая форма frmPopup. Вы можете использовать следующий код, чтобы убедиться, что всплывающее окно всегда находится поверх главной формы без использования topmost (что работает, но может иметь некоторые побочные эффекты).
frmPopup.show(frmMain)
или вы можете использовать более длинную версию (как написано выше кем-то
frmPopup.Owner = frmMain
frmPopup.show()
Еще одна замечательная вещь - вы также можете использовать ее с ShowDialog ()
frmPopup.ShowDialog(frmMain)
Я знаю, что это старый пост, но, возможно, люди, которые все еще ищут простые решения, найдут это. Это действительно помогло улучшить функциональность моих программ с гораздо меньшим количеством кода, чем я использовал раньше.