2012-02-02 52 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(); 
} 
相关问题