Запустить пользовательский элемент управления бесформенными уведомлениями?

#c# #.net #winforms

#c# #.net #winforms

Вопрос:

в моем коде мне нужно запустить элемент управления уведомлениями без отображения какой-либо формы, как я могу это сделать? я просто добавляю этот код в основной поток program.cs, но он не работает, пожалуйста, помогите мне с этим?

         Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run();
        TaskbarIcon tb = new TaskbarIcon();
        var balloon = new Warning();
        tb.ShowCustomBalloon(balloon, PopupAnimation.Fade, 12000);
  

предупреждение — это пользовательский элемент управления

Комментарии:

1. Невозможно угадать, чем может быть панель задач, или создание пользовательского элемента управления без формы может хорошо закончиться. Обычно это делается с помощью класса NotifyIcon.

Ответ №1:

Я бы рекомендовал вызвать Application.Run() с экземпляром ApplicationContext в качестве параметра:

 class Kernel : ApplicationContext
{
    private TaskbarIcon tb = new TaskbarIcon();

    public void Show()
    {
        var ballon = new Warning();
        tb.ShowCustomBalloon(balloon, PopupAnimation.Fade, 12000);
    }

    /// <summary>
    /// Closes the application.
    /// </summary>
    public void Close()
    {
        Application.Exit();
    }
}
  

Programm.cs:

 Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

using(var kernel = new Kernel())
{
    Application.Run(kernel);
}
  

Таким образом, это работает с настройками по умолчанию .NET NotifyIcon.

Ответ №2:

Вы могли бы добавить невидимую форму в качестве хоста, если хотите. Это неприятно, но работает для вашего сценария.

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