Отображение 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;
}
Другие вопросы по тегам