Windows窗体可见性问题

时间:2009-07-15 07:06:27

标签: c# .net forms visual-studio-2008

我对如何使表格可见感到困惑。当我们创建Windows窗体应用程序时,即使没有显式调用Show方法,默认的Form1也会自动显示。但是如果我们想要显示另一个表格并使其可见,我们必须通过调用Show。

使其可见

为什么会有这样的差异?

我正在使用VSTS 2008 + C#+ .Net 2.0。

3 个答案:

答案 0 :(得分:4)

查看VS为您生成的文件“Program.cs”。

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

答案 1 :(得分:2)

这是因为Form1将是应用程序的主要形式。具体来说,它将传递给Application.Run方法,该方法将创建一个{1}}对象,并将Form1指定为主窗体。当应用程序启动时,它会检查ApplicationContext是否有主表单,如果是,则表单的ApplicationContext属性将设置为Visible,这将导致表单显示

或者,在代码中表示,这是true

Application.Run

public static void Run(Form mainForm) { ThreadContext.FromCurrent().RunMessageLoop(-1, new ApplicationContext(mainForm)); } 将调用另一个内部函数来设置消息循环,并在该函数中找到以下内容:

RunMessageLoop

这就是Form1展示的原因。

这也提示了如何防止Form1表单在启动时自动显示。我们需要做的就是找到一种启动应用程序的方法,而不必在if (this.applicationContext.MainForm != null) { this.applicationContext.MainForm.Visible = true; } 中将Form1指定为主要表单:

ApplicationContext

答案 2 :(得分:1)

因为form1是Application.Run(new form1())调用的主要形式;

你会在program.cs文件中找到这个代码,你可以改成任何形式。