C# 重写Notification提示窗口
huang714 人气:0这个窗口是右下角提示小窗口,主要用于提示。
private void btnStartNotification_Click(object sender, EventArgs e) { Bz.Controls.BzNotification notification = new Bz.Controls.BzNotification(); notification.ShowAlert("启动成功", Bz.Controls.BzNotification.enumType.Success); }
public partial class BzNotification : Form { public static int Count = 0; System.Windows.Forms.Timer timer = new Timer(); private int x, y; public event Action OnNotificationClosed; private bool isClosed = false; public BzNotification() { InitializeComponent(); timer.Enabled = true; timer.Tick += Timer_Tick; } private void Timer_Tick(object sender, EventArgs e) { switch (action) { case enmAction.wait: timer.Interval = 5000; action = enmAction.close; break; case enmAction.start: timer.Interval = 1; this.Opacity += 0.1; if (this.x < this.Location.X) { this.Left--; } else { if (this.Opacity == 1.0) { action = enmAction.wait; } } break; case enmAction.close: timer.Interval = 1; this.Opacity -= 0.1; this.Left -= 3; if (base.Opacity == 0.0 && isClosed==false) { isClosed = true; base.Close(); } break; default: break; } } public enum enmAction { wait, start, close } public enum enumType { Success, Warning, Error, Info } private enmAction action; public void ShowAlert(string msg, enumType type) { this.Opacity = 0.0; this.StartPosition = FormStartPosition.Manual; this.x = Screen.PrimaryScreen.WorkingArea.Width - this.Width + 15; this.y = Screen.PrimaryScreen.WorkingArea.Height - this.Height - this.Height*Count-5*Count; this.Location = new Point(this.x, this.y); this.x = Screen.PrimaryScreen.WorkingArea.Width - base.Width - 5; switch (type) { case enumType.Success: picLogo.Image = Properties.Resources.success_icon; this.BackColor = Color.SeaGreen; break; case enumType.Error: picLogo.Image = Properties.Resources.error_info; this.BackColor = Color.DarkRed; break; case enumType.Info: picLogo.Image = Properties.Resources.info_icon; this.BackColor = Color.RoyalBlue; break; case enumType.Warning: picLogo.Image = Properties.Resources.alert_icon; this.BackColor = Color.DarkOrange; break; } lblMessage.Text = msg; this.Show(); this.action = enmAction.start; Count++; timer.Interval = 1; } private void picClose_Click(object sender, EventArgs e) { timer.Interval = 1; action = enmAction.close; if (Count > 0) Count--; } protected override void OnClosed(EventArgs e) { base.OnClosed(e); if (OnNotificationClosed != null) { OnNotificationClosed(); } if (Count > 0) Count--; } }
到此这篇关于C# 重写Notification提示窗口的示例代码的文章就介绍到这了,更多相关C# 重写Notification提示窗口内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
加载全部内容