Создание всплывающего окна, такого как Windows Messenger или AVG

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

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

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

4 ответа

Решение

Вы можете использовать элемент управления 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. Тогда просто покажите свою форму в этой позиции.

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

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

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

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