Создание всплывающего окна, такого как 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 имел элемент управления тостером.