如何在C#中更改开始表单

时间:2015-09-29 12:53:38

标签: c# winforms visual-studio-2015

我需要Windows窗体的帮助。我创建了几个窗体,我试图将它们链接在一起。现在 form4 有两个按钮,我想链接到 form2 form3 。我在 form4 上的第一个按钮没有加载 form2 ,当我点击按钮时它只会重新加载。我对该按钮的代码是:

  private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.Show();
        }
form2 上的

我有一个加载事件

  private void form4_load(object sender, EventArgs e)
    {
        var f4 = new Form4();
        this.Close();
        f4.ShowDialog();

    }

这就是在form2上看button1_click的样子:

 private void button1_Click(object sender, EventArgs e)
    {
        Form1.setPlayerNames(p1.Text, p2.Text);
        this.Close();

    }

4 个答案:

答案 0 :(得分:0)

你几乎没有问题。第一个是模态形式的工作方式,你必须这样做:

void form4_load(object sender, EventArgs e)
{
    var f4 = new Form4();
    this.Close(); // close first
    f4.ShowDialog();
}

否则this.Close在您关闭f4之前不会发生。

其次与启动表单的运行方式有关。通常你有代码

Application.Run(new Form1());

您必须将其更改为

var f1 = new Form1();
f1.ShowDialog();

否则,当您关闭f1时,您的申请将会终止。而且你不想要这个,你想要另一个表格作为主要形式。

答案 1 :(得分:0)

您需要在program.cs上调用表单,如下所示:

IMappingEngine

将form2上的load事件留空,就像这样;

 static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form4());
    }
}

您已经在开始时加载了form4,无需再次加载

答案 2 :(得分:0)

我没有得到你想要做的事情,但这就是:

按下按钮,您将创建Form2类型的表单。

当Form2完成加载时,它会创建一个Form4类型的新表单并显示它。

基本上会发生什么:

<小时/> Form4 已创建。

用户在 Form4 上按 Button1

Button1 会创建新的 Form2 并显示它。

Form2 加载,创建一个新的 Form4 并显示它。

<小时/> 这就是为什么你看到Form4&#34;重新加载&#34;本身。

如果删除Form2加载事件中显示Form4的行,您将看到正在创建Form2。

答案 3 :(得分:0)

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

缩短方式,如果您不希望form1隐藏,请删除Hide();