Скрытие форм при запуске: почему не это. Hide () скрывает мою форму? - PullRequest
11 голосов
/ 22 сентября 2010

Я хотел скрыть главное окно моего приложения при запуске, поэтому я поместил это в конструктор:

this.Hide();

Это не скрывает мою форму, хотя. Кажется, я могу получить только кнопки, чтобы скрыть форму. Я что-то здесь не так делаю?

Ответы [ 5 ]

27 голосов
/ 22 сентября 2010

вы можете использовать эту строку кода.Это не скроет, но будет свернуто:

this.WindowState = FormWindowState.Minimized;

Кроме того, если вы не хотите, чтобы оно отображалось на панели задач, вы можете добавить эту строку:

this.ShowInTaskbar = false;

Но почему вы создаете форму, если не хотите, чтобы она была видна с самого начала?

13 голосов
/ 18 декабря 2011

Просто переопределите метод OnVisibleChanged и измените видимость формы там, примерно так:

protected override void OnVisibleChanged(EventArgs e)
{
    base.OnVisibleChanged(e);
    this.Visible = false;
}

И это все! Просто и чисто.

4 голосов
/ 02 июня 2015

Если вы предпочитаете использовать это. Скрыть или это. Как вы можете сделать это

protected override void OnShown(EventArgs e)
{
    base.OnShown(e);
    this.Hide();
}
2 голосов
/ 11 июня 2013

Я попытался сделать это, установив для Visible значение false или скрыв его в конструкторе и в событии OnLoad.

Ни один из них не имел никакого эффекта, так как форма устанавливается на Visible после ее создания ипосле запуска события OnLoad в SetVisibleCore.

Установка скрытой формы в событии Shown работает, но форма на мгновение мерцает на экране.

Вы также можете переопределить SetVisibleCoreи установите значение false, но тогда OnLoad не будет запущен, и некоторые другие события будут сбиты с толку, такие как закрытие формы.

Лучшее решение, по моему мнению, это установить форму свернутой, а неотображается на панели задач перед вызовом Application.Run ().

Поэтому вместо:

Application.Run(new MainForm());

do:

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;
}

Установка WindowState обратно на Normal, пока форма скрыта, не имеет никакого эффекта, поэтому вам нужно будет сделать это после того, как вы снова отобразите форму, в противном случае значок будет на панели задач, но форма будет свернута.

this.Show();
this.WindowState = FormWindowState.Normal;
0 голосов
/ 22 сентября 2010

Попробуйте установить свойство visible формы в false до того, как оно будет загружено в основную точку входа вашего приложения.

Form1 obj = new Form1();
obj.visible = false;
Application.Run(obj);

Или попробуйте установить координаты формы в более высокое положение, например 9000, 9000.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...