我想在启动时隐藏我的应用程序的主窗口,所以我把它放在构造函数中:
this.Hide();
但这并不掩盖我的形式。看起来我只能通过按钮来隐藏表单。我在这里做错了吗?
答案 0 :(得分:27)
你可以使用这行代码。它不会隐藏它,但它会被最小化:
this.WindowState = FormWindowState.Minimized;
此外,如果您不希望它显示在任务栏上,您可以添加以下行:
this.ShowInTaskbar = false;
但是,如果您不希望首先看到该表单,为什么要创建该表单?
答案 1 :(得分:13)
只需覆盖OnVisibleChanged方法并在其中更改表单的可见性,如下所示:
protected override void OnVisibleChanged(EventArgs e)
{
base.OnVisibleChanged(e);
this.Visible = false;
}
就是这样!简单干净。
答案 2 :(得分:4)
如果您更愿意使用此。隐藏或此。您可以这样做
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
this.Hide();
}
答案 3 :(得分:2)
我尝试将Visible设置为false或隐藏在构造函数和OnLoad事件中。
这些都没有任何效果,因为在创建表单之后以及在SetVisibleCore中触发OnLoad事件之后,表单被设置为Visible。
将表单设置为隐藏在“已显示”事件中,但表单上的表单会闪烁一段时间。
您也可以覆盖SetVisibleCore并将值设置为false,但是不会触发OnLoad并且其他一些事件会搞乱,例如表单关闭。
我认为最好的解决方案是在调用Application.Run()之前将表单设置为最小化并且不显示在任务栏中。
所以而不是:
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;
答案 4 :(得分:0)
在将表单的visible属性加载到应用程序的主入口点之前,请尝试将其设置为false。
Form1 obj = new Form1();
obj.visible = false;
Application.Run(obj);
或者尝试将表单的坐标设置为更高的位置,如9000,9000。
答案 5 :(得分:0)
您可以使用Form.Hide()
启动隐藏的表单:
Form2 form = new Form2();
//Start Form2 hidden
form.Hide();
//Close Form2
form.Close();
答案 6 :(得分:0)
您可以在表单中创建一个 firstOpen bool 变量,并在 Show 事件中进行设置
private void Form1_Shown(object sender, EventArgs e)
{
if (firstOpen)
{
this.WindowState = FormWindowState.Minimized;
Hide();
notifyIcon1.Visible = true;
}
firstOpen = false;
}
在第一次显示时,它会被隐藏。下次会正常使用。
答案 7 :(得分:0)
要在启动时隐藏表单,其实很简单。您可以创建表单并将其存储在局部变量中,并且只是不将表单放在 Application.Run()
中,这样它就不会在启动时呈现:
Form1 form = new Form1();
Application.Run();
Øyvind 是正确的,从构造函数调用 this.Hide()
是行不通的,因为表单还没有准备好。这样,由于表单已经创建好了,可以在表单的任何函数中调用this.Show()
,如果想隐藏就调用this.Hide()
。