表格没有显示

时间:2010-04-19 12:11:37

标签: c# winforms

也许这与它作为主要形式有关,但我会问这个问题。 我的mainForm是第一个在程序启动时加载的。(/ p>)

然后我单击一个名为Add的按钮,它应打开一个新表单,然后关闭mainForm。

问题是,是一瞬间显示新表格,然后关闭两者。

代码:

private void addFrmBtn_Click(object sender, EventArgs e)
    {
        saveForm saveform = new saveForm();
        saveform.Show();
        this.Close();
    }

5 个答案:

答案 0 :(得分:6)

Program.Main()方法中,您可能会遇到以下情况:

class Program
{
    void Main()
    {
        Application.Run(new MainForm());
    }
}

这意味着您的应用程序的消息循环围绕主窗体运行。一旦关闭,应用程序的主UI线程就会随之而来。

你可以:

以下是选项3的执行方式:

private void addFrmBtn_Click(object sender, EventArgs e)
{
    saveForm saveform = new saveForm();
    saveform.Show();
    this.Hide();
}

答案 1 :(得分:1)

问题似乎是,您正在关闭打开子表单的父表单。 要保留表单,请使用this.Hide();而不是关闭。

答案 2 :(得分:1)

我想当主窗体关闭时,它会终止你的应用程序。将您的代码更改为:

private void addFrmBtn_Click(object sender, EventArgs e) 
    { 
        saveForm saveform = new saveForm(); 
        saveform.Show(); 
        this.Hide(); 
    } 

答案 3 :(得分:0)

项目属性中的

,关闭模式,选择“当最后一个表格关闭时”

抱歉,这个选项似乎只适用于visual basic project

答案 4 :(得分:0)

我猜您正在显示主表单:

Application.Run(new MainForm());

这是visual studio生成的默认代码,它有一些可能意外的行为:

This method adds an event handler to the mainForm parameter
for the Closed event. The event handler calls ExitThread to
clean up the application.

http://msdn.microsoft.com/en-us/library/ms157902.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.application.run.aspx

要么不将表单传递给Application.Run(),要么使用.Hide()而不是.Close()。