C# 重写Notification提示窗口


这个窗口是右下角提示小窗口,主要用于提示。

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--;
        }

    }

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值