2013-04-09 5 views
-2

У меня есть 2 формы; Моя основная форма имени Form1 и моя вторая форма имени Form2Как создать вторую форму в начале основной формы?

Моя главная форма появляется в начале, и я хотел бы показать Form2 тоже, но он показывает под Form1. И я хочу, чтобы он появился поверх моей основной формы.

Я попытался установить Form2 «s TopMost свойство true затем false, но это не сработало. Я также попытался создать другую тему для Form2, чтобы появиться после Form1, в этом случае быстро появляется Form2, затем исчезает.

+0

'TopMost' должны работали на самом деле, но только в качестве временного решения. – Neolisk

ответ

2

Form2 Показать в Shown обработчик события Form1:

private void Form1_Shown(object sender, EventArgs e) 
{ 
    Form2 form2 = new Form2(); 
    form2.Show(); 
} 

Вы можете использовать ShowDialog() вместо Show() если вы хотите Form2 модальным.

+1

Это решило! Спасибо. – user2263265

+1

+1. Никогда не знал о событии «Shown». Хотя я не уверен, почему это работает без указания права собственности, что-то вроде 'form2.Show (this)'. Является ли это особенностью порядка макета, который по умолчанию создает форму поверх последней созданной формы в проекте? – Neolisk

+0

@Neolisk да, окна заказываются в соответствии с их внешним видом на экране. [SetWindowPos] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545 (v = vs.85) .aspx) метод используется для установки Z-порядка формы, когда он отображается. –

0

Добавьте этот код в случае нагрузки Form1:

Form2 form2 = new Form2(); 
      form2.TopMost = true; 
      form2.Show(); 
+0

Спасибо. Но я не хочу, чтобы Form2 был TopMost. Я просто хочу, чтобы он появился поверх Form1 при запуске. – user2263265

0
new Form2().ShowDialog() 

Это будет также блокировать Form1 Form2, пока не закрывается

+0

Спасибо. Это правильный ответ, но я не хочу, чтобы Form1 был заблокирован. Благодарю вас. – user2263265

Смежные вопросы