Проблема с подсказками - PullRequest
1 голос
/ 03 марта 2011

HI

Я создаю подсказки по всему нашему приложению. Моя проблема в том, что все всплывающие подсказки остаются на панели задач, и их нужно навести на них, чтобы они исчезли.

        public static bool SetBalloonTip(string balloonTipTitle, string balloonTipText, ToolTipIcon balloonTipIcon)
    {
        bool result = false;
        NotifyIcon notifyIcon;

        try
        {
            notifyIcon = new NotifyIcon();

            notifyIcon.Icon = SystemIcons.Information;
            notifyIcon.BalloonTipTitle = balloonTipTitle;
            notifyIcon.BalloonTipText = balloonTipText;
            notifyIcon.BalloonTipIcon = balloonTipIcon;

            notifyIcon.Visible = true;
            notifyIcon.ShowBalloonTip(30000);

            result = true;
        }
        catch (Exception)
        {

            throw;
        }

        return result;
    }

У меня вопрос, как сделать так, чтобы значок уведомления исчез после того, как он был показан?

Ответы [ 3 ]

2 голосов
/ 04 марта 2011

Нашел решение:

Первый:

private static System.ComponentModel.IContainer components;

Второй:

public static bool SetBalloonTip(string balloonTipTitle, string balloonTipText, ToolTipIcon balloonTipIcon)
    {
        bool result = false;
        NotifyIcon notifyIcon;

        try
        {
            if (components == null)
            {
                components = new System.ComponentModel.Container();
            }

            notifyIcon = new NotifyIcon(components);

            notifyIcon.Icon = SystemIcons.Information;
            notifyIcon.BalloonTipTitle = balloonTipTitle;
            notifyIcon.BalloonTipText = balloonTipText;
            notifyIcon.BalloonTipIcon = balloonTipIcon;

            notifyIcon.Visible = true;
            notifyIcon.ShowBalloonTip(30000);

            result = true;
        }
        catch (Exception)
        {

            throw;
        }

        return result;
    }

Третий:

        public static void DisposeOfBallonTips(bool disposing)
    {
        try
        {
            // Clean up any components being used.
            if (disposing)
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
        }
        catch (Exception)
        {

            throw;
        }
    }

Вызов DisposeOfBallonTipsкогда я хочу очистить все NotifyIcons.

2 голосов
/ 03 марта 2011

Вы отправляете больше, чем один шарик одновременно?

С MSDN :

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

http://msdn.microsoft.com/en-us/library/ms160064.aspx

0 голосов
/ 03 марта 2011

Я в основном догадываюсь, но попробуйте это

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

     ...
     ... 
     notifyIcon.BalloonTipClosed += new EventHandler(notifyIcon_BalloonTipClosed);
     notifyIcon.ShowBalloonTip(30000);
     ...
}



static void notifyIcon_BalloonTipClosed(object sender, EventArgs e)
{
    ((NotifyIcon) sender).Visible = false;
}
...