2013-09-09 4 views
0

У меня есть приложение, которое тихо работает в системном трее. Иногда мне это нужно, чтобы выдать маленькую форму уведомления конечному пользователю.Показывает ChildForm сверху, даже если скрыт ParentForm.

Я попытался выполнить это приложение 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; 
} 
+3

Вы должны перестать пытаться толкать окно в лицо пользователя, Windows активно препятствует этому. Покажите подсказку шара, вы можете ответить на щелчок на воздушном шаре и получить свое окно впереди. –

ответ

-1

После заходя в некоторые точки останова, я понял, что childForm будет TopMost до тех пор, как я установил, что имущество после childForm было правильно инициализирован и показан. Я был в состоянии заставить это работать, установив TOPMOST команду в Показанные события, как это:

private void ChildForm_Shown(object sender, System.EventArgs e) 
{ 
    this.TopMost = true; 
} 
Смежные вопросы