如何在第一个Form已加载时打开第二个Form作为对话框?

时间:2012-02-02 06:18:35

标签: c# winforms user-interface modal-dialog

我有两种形式:Form1和Form2。

我想在加载Form1时将Form2显示为对话框。我的意思是当Form1加载并且对用户可见时,Form2显示为对话框。

使用Form1_Load事件,它首先将Form2显示为对话框,然后显示Form1。

如何首先将Form1和Form2显示为对话框?

3 个答案:

答案 0 :(得分:5)

使用form1 form2事件加载void form1_Shown(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.Show(); } ,如下所示:

form1

这样首先显示Shown Shown并举起form2事件,在{{1}}事件中,{{1}}将被加载并显示。

答案 1 :(得分:0)

这将启动Form1,然后启动Form2

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

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

或者不首先加载Form1,然后首先强制它们进入Form2。

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

     InitializeComponent();
}

如果您只想先启动Form2,只需修改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());
    }

}

答案 2 :(得分:0)

您可以在事件Form1 Validated:

中加载第二个表单
public Form1()
{    
     this.Validated += Form1_Validated;
     InitializeComponent();
}
private void Form1_Validated(object sender, EventArgs e)
{
     Form2 myForm2 = new Form2();
     myForm2.Show();
}