Как открыть вторую форму как диалог, когда первая форма уже загружена? - PullRequest
1 голос
/ 02 февраля 2012

У меня есть две формы: Form1 и Form2.

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

При событии Form1_Load сначала отображается форма 2 в виде диалога, а затем отображается форма 1.

какя могу сначала показать Form1, а затем Form2 как диалог?

Ответы [ 3 ]

5 голосов
/ 02 февраля 2012

Используйте событие Shown для form1, чтобы загрузить form2 следующим образом:

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

Таким образом, сначала отобразится form1 и поднимется Shown событие и внутри Shown событие, form2 будет загружено и отображено.

0 голосов
/ 02 февраля 2012

Вы можете загрузить вторую форму в событии Form1 Validated:

public Form1()
{    
     this.Validated += Form1_Validated;
     InitializeComponent();
}
private void Form1_Validated(object sender, EventArgs e)
{
     Form2 myForm2 = new Form2();
     myForm2.Show();
}
0 голосов
/ 02 февраля 2012

Это для запуска 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());
    }

}
...