Отображение ChildForm сверху, даже когда ParentForm скрыт
У меня есть приложение, которое работает тихо в системном трее. Иногда мне нужно, чтобы всплывающая небольшая форма уведомления для конечного пользователя.
Я попытался выполнить это приложение w/ a WinForms, основная часть его логики встроена в скрытую форму, которая не отображается пользователю. Затем, когда определенные критерии выполнены, я отображаю дополнительную форму для пользователя.
Моя проблема в том, что эта вторичная форма не всегда на вершине, даже если я установил TopMost = true.
Я считаю, что это потому, что основная форма не отображается, поэтому ее дочерние формы не могут использовать TopMost = true. Я пытался переместить TopMost в несколько разных мест. Есть другие идеи?
Логика MainForm:
ChildForm childForm = new ChildForm(this);
int x = (Screen.PrimaryScreen.Bounds.Width / 2) - (childForm.Width / 2);
childForm.StartPosition = FormStartPosition.Manual;
childForm.Location = new Point(x, 0);
childForm.ShowDialog();
//childForm.TopMost = true;
Логика ChildForm:
public ChildForm(MainForm mainForm)
{
InitializeComponent();
//this.TopMost = true;
}
1 ответ
Войдя в некоторые точки останова, я понял, что childForm будет TopMost, пока я устанавливаю это свойство после того, как childForm правильно инициализирован и показан. Я смог заставить это работать, установив команду TopMost в событии Shown следующим образом:
private void ChildForm_Shown(object sender, System.EventArgs e)
{
this.TopMost = true;
}