Как у меня не отображается окно при запуске?

Возможный дубликат:
Как сделать форму запуска изначально невидимой или скрытой

У моего приложения есть системный трей, и я не хочу, чтобы окно появлялось при запуске.

Как я могу сделать это?


Это приложение Windows Form по умолчанию.

Я перетащил через notifyIcon и contextxMenuStrip

Когда форма закрыта, приложение закрывается (тоже не хочу). Но когда приложение запускается, форма Windows также становится видимой. Так как мне не запустить форму при запуске (и не выйти при закрытии окна)?

2 ответа

Решение

В основном вам нужно перезаписать SetVisibleCore() чтобы достичь этого... другой вариант, чтобы установить ShowInTaskbar в false и использовать ApplicationContext в Application.Run,

Некоторые справочные ссылки и пример кода:

Ответ не в том, чтобы скрыть вашу основную форму, а в том, чтобы не показывать ее / загружать в первую очередь.

Одним из способов является создание пользовательских ApplicationContext:

public static class Program
{
    public static void Main(string[] arguments)
    {
        var context = new NotifyIconApplicationContext();
        context.Icon.Icon = new Icon(PATH_TO_ICON_FILE_HERE);
        context.Icon.Visible = true;    
        Application.Run(context);
    }
}

class NotifyIconApplicationContext : ApplicationContext
{
    public NotifyIconApplicationContext()
    {
        Icon = new NotifyIcon();
    }
    public NotifyIcon Icon { get; set; }
}

Затем вы можете прикрепить обработчики к значку уведомления до Application.Run(context) строка, позволяющая открывать основную форму, показывать меню и т. д.

Другие вопросы по тегам