Скрыть основную форму C # при автозапуске - PullRequest
3 голосов
/ 17 февраля 2011

В Интернете я нашел очень простой метод, который позволяет мне скрыть основную форму в моем приложении:

  • Создать консольное приложение

  • Установите тип вывода для Windows Forms Applications

. Это прекрасно работает, когда я запускаю приложение из отладки в Visual Studio или вручную.* Я также настроил это приложение на автоматический запуск с Windows (в данном случае Windows 7), поэтому мне не нужно каждый раз запускать его вручную.Когда это происходит, возникает очень очень очень короткий момент, в который я все еще вижу мерцание в полноэкранном режиме.Есть ли способ, которым я могу предотвратить это?

Редактировать: Люди, кажется, упускают одну важную вещь.Проект создается как консольное приложение, поэтому он имеет метод без Form или Application.Run () .У него просто есть один статический метод Main, как и у любого другого консольного приложения.

Edit2: Просто не интересно, стоит ли создавать обычный проект WinForms и пытаться скрыть это главное окно, используя предложенный ответ или другое решение?

Спасибо!

Ответы [ 6 ]

3 голосов
/ 17 февраля 2011

Метод Application.Run(Form) делает отображаемую форму видимой.Создайте форму со свойством Visible, изначально установленным на false, и используйте аргумент без аргументов Application.Run() в основном цикле.

2 голосов
/ 17 февраля 2011

Я только что проверил это:

 private void Form1_Load(object sender, EventArgs e)
    {
      this.Hide();
    }

также установлен

this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
1 голос
/ 28 октября 2016

Попробуйте также скрыть приложение из панели задач.

Для этого используйте этот код.

protected override void OnLoad(EventArgs e)
   {
    Visible = false; // Hide form window.
    ShowInTaskbar = false; // Remove from taskbar.
    Opacity = 0;

    base.OnLoad(e);
   }

Спасибо. Рухул

0 голосов
/ 09 октября 2012

Основная форма не может быть скрыта напрямую. После загрузки формы она должна что-то делать.

Примерно так:

private void Form1_Load(object sender, EventArgs e)
{
  this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
  for (int i = 0; i <= 100; i++)
  {
    progressBar1.ForeColor = Color.Blue;
    progressBar1.Value = i;
    System.Threading.Thread.Sleep(40);
    if (progressBar1.Value == 100)
    {
      Form12 f1 = new Form12();
      f1.Show();
    }
  }
  this.Opacity = 0;
  this.Visible = false;
}
0 голосов
/ 17 февраля 2011

Вместо

Application.Run(new MainForm())

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

0 голосов
/ 17 февраля 2011

то, что вы, вероятно, видите, это окно команд, появляющееся и исчезающее.

Я бы порекомендовал создать его либо в виде формы, а затем следовать указаниям Джеффри, либо создать и установить его как сервис , который запускается каждый раз.

...