我对如何使表格可见感到困惑。当我们创建Windows窗体应用程序时,即使没有显式调用Show方法,默认的Form1也会自动显示。但是如果我们想要显示另一个表格并使其可见,我们必须通过调用Show。
使其可见为什么会有这样的差异?
我正在使用VSTS 2008 + C#+ .Net 2.0。
答案 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文件中找到这个代码,你可以改成任何形式。