我想在启动时隐藏我的应用程序的主窗口,所以我将以下代码放在构造函数中:
this.Hide();
然而,这并没有隐藏我的表格。似乎我只能用按钮来隐藏表格。我在这里做错了什么吗?
您可以使用这行代码。它不会隐藏它,但是它将被最小化:
this.WindowState = FormWindowState.Minimized;
此外,如果您也不希望在任务栏上显示该内容,您可以添加这行代码:
this.ShowInTaskbar = false;
但是如果您一开始就不想让表单可见,为什么要创建它呢?
this.Hide()
实际上并没有隐藏窗体? - Pieter只需要覆盖 OnVisibleChanged 方法并在其中更改窗体的可见性, 就像这样:
protected override void OnVisibleChanged(EventArgs e)
{
base.OnVisibleChanged(e);
this.Visible = false;
}
就是这样!简单而清晰。
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
this.Hide();
}
Application.Run(new MainForm());
做:
MainForm form = new MainForm();
form.WindowState = FormWindowState.Minimized;
form.ShowInTaskbar = false;
Application.Run(form);
然后应用程序将以所有正确的事件运行(甚至是OnShown),但窗体不会显示。
如果您想在此之后像平常一样隐藏/显示窗体,则需要将WindowState和ShowInTaskbar设置回Normal和true。
在Shown事件中,您可以将ShownInTaskbar设置为true,然后正确地隐藏窗体。
this.Shown += new System.EventHandler(this.MainFormShown);
...
void MainFormShown(object sender, EventArgs e)
{
this.ShowInTaskbar = true;
this.Visible = false;
}
this.Show();
this.WindowState = FormWindowState.Normal;
private void Form1_Shown(object sender, EventArgs e)
{
if (firstOpen)
{
this.WindowState = FormWindowState.Minimized;
Hide();
notifyIcon1.Visible = true;
}
firstOpen = false;
}
第一次显示时,它将被隐藏。下一次将正常工作。
Form1 obj = new Form1();
obj.visible = false;
Application.Run(obj);
或者尝试将表单的坐标设置为更高的位置,例如9000, 9000。
要在启动时隐藏窗体,实际上非常简单。您可以创建窗体并将其存储在本地变量中,然后只需不将该窗体放入Application.Run()
中,以便在启动时不呈现它:
Form1 form = new Form1();
Application.Run();
Øyvind是正确的,从构造函数调用 this.Hide()
是行不通的,因为窗体还没有准备好。这样,由于窗体已经创建,您可以在窗体的任何函数中调用 this.Show()
,并且如果您想要隐藏它,则可以调用 this.Hide()
。
Form.Hide()
来隐藏表单:Form2 form = new Form2();
//Start Form2 hidden
form.Hide();
//Close Form2
form.Close();