Создание всплывающего окна, такого как Windows Messenger или AVG - PullRequest
9 голосов
/ 05 января 2009

Как я могу создать всплывающее окно, которое вы видите из Windows Messenger, AVG, Norton или кого-то еще?

Я хочу, чтобы она показала информацию, а затем ускользнула через несколько секунд.

Редактировать: он должен блокироваться, как Form.ShowDialog () , поскольку программа завершает работу после отображения уведомления

Ответы [ 4 ]

20 голосов
/ 05 января 2009

Вы можете использовать элемент управления notifyIcon, который является частью .NET 2.0 System.Windows.Forms. Это позволяет вам разместить значок для вашего приложения в системном трее. Затем вы можете вызвать метод ShowBalloonTip (int timeOut) для этого. Обязательно сначала установите текст и свойства значков на notifyIcon, чтобы он работал. Небольшой пример кода:

private void button1_Click(object sender, EventArgs e)
        {
            this.notifyIcon1.BalloonTipText = "Whatever";
            this.notifyIcon1.BalloonTipTitle = "Title";
            this.notifyIcon1.Icon = new Icon("icon.ico");
            this.notifyIcon1.Visible = true;
            this.notifyIcon1.ShowBalloonTip(3);
        }

РЕДАКТИРОВАТЬ: Хорошо, так notifyIcon не будет работать для вас. Моим вторым предложением было бы создать собственный контроль для этого. На самом деле, я бы использовал форму. Простая форма, без границ, без блока управления и просто с запущенным таймером, так что вы можете установить непрозрачность для постепенного исчезновения. Затем вы можете легко получить правый нижний угол экрана, используя Rectangle Screen.PrimaryScreen.WorkingArea. Затем просто покажите свою форму в этой позиции.

11 голосов
/ 05 января 2009

Не создавайте модальный (блокирующий) воздушный шар. Пожалуйста. Большая часть дизайна этих пользовательских интерфейсов заключается в том, что они являются , а не диалоговыми окнами: это временные, потенциально неинтерактивные элементы, предназначенные для предоставления случайной информации пользователю без обязательно прерывая их рабочий процесс. Воздушный шар, который крадет фокус и блокирует пользовательский ввод, будет в лучшем случае раздражать - если вам нужен диалог, тогда используйте диалог.

6 голосов
/ 05 января 2009

Возможно, вы захотите взглянуть на эту статью http://www.codeproject.com/KB/miscctrl/RobMisNotifyWindow.aspx, в которой есть код для отображения окна уведомлений в стиле MSN Messenger

1 голос
/ 05 января 2009

.NET 1.1 Visual Basic Power Pack имел управление тостером.

...