2012-02-02 45 views
1

我有兩種形式:Form1和Form2。如何在第一個窗體已經加載時打開第二個窗體作爲對話框?

我想在Form1加載時顯示Form2作爲對話框。我的意思是當Form1被加載並且對用戶可見時,Form2被顯示爲對話框。

使用Form1_Load事件時,它首先將Form2顯示爲對話框,然後顯示Form1。

如何首先將Form1和Form2作爲對話框顯示?

+0

可能重複:[?我怎樣才能關閉登錄表單,並沒有表現出我的應用程序關閉的主要形式(HTTP://計算器。 com/questions/4759334/how-can-i-close-a-login-form-and-show-the-main-form-without-my-application-closi) – 2012-02-02 06:28:45

+0

這裏就是這樣:https:// msdn。 microsoft.com/en-us/library/c7ykbedk(v=vs.110).aspx或谷歌'showdialog方法' - >這將不允許使用Form1,直到Form2關閉。如果你需要關閉而不是隱藏,請不要忘記使用Dispose。 – bshea 2017-01-12 16:28:11

回答

4

使用Shown事件form1加載form2如下:

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

那首先會顯示form1並提高Shown事件和Shown事件,將會加載並顯示form2

0

此推出Form1上,然後窗體2

public Form1() 
{  
    this.Load+= Form1_Load; 
    InitializeComponent(); 
} 

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

或做不先加載Form 1,並迫使他們到窗體2首。

public Form1() 
{  
    Form2 myForm2 = new Form2(); 
    myForm2.ShowDialog(); 
    //ShowDialog() will prevent actions from happening on this 
    //thread until Form2 is closed. 

    InitializeComponent(); 
} 

如果你只是想先啓動窗體2,只需修改Program.cs的

static void Main(string[] args) 
{ 

    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    if (args.Length == 0) //if no command line arguments, run Form1 
    { 
     Application.Run(new Form1()); 
    } 
    else //if command line arguments exist, run Form2 
    { 
     Application.Run(new Form2()); 
    } 

} 
+0

抱歉,我可能不會向你的想法澄清我的問題。我想先顯示form1。當form1被顯示時,form2? – buddy 2012-02-02 06:34:52

+0

使用選項二,但在showdialog之前初始化 – Corylulu 2012-02-02 07:16:42

0

您可以在事件Form1中驗證加載第二種形式:

public Form1() 
{  
    this.Validated += Form1_Validated; 
    InitializeComponent(); 
} 
private void Form1_Validated(object sender, EventArgs e) 
{ 
    Form2 myForm2 = new Form2(); 
    myForm2.Show(); 
} 
相關問題