예제 #1
0
        public void ShowMessage(string message, MessageType messageType, int?duration = null)
        {
            using (var gfx = CreateGraphics())
            {
                var height = gfx.MeasureString(message, lblErrors.Font, new Size(lblErrors.Width, Height));
                _message = new MessageAnimation(message, messageType, (int)height.Height + 10)
                {
                    Duration = duration
                };
                switch (messageType)
                {
                case MessageType.Info:
                    lblErrors.BackColor = _theme.InfoBackColor;
                    break;

                case MessageType.Warning:
                    lblErrors.BackColor = _theme.WarningBackColor;
                    break;

                case MessageType.Error:
                    lblErrors.BackColor = _theme.ErrorBackColor;
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(messageType), messageType, null);
                }
            }
            lblErrors.Text = _message.Message;
            lblErrors.BringToFront();
            tmrAnimationTimer.Start();
        }
예제 #2
0
        private void tmrAnimationTimer_Tick(object sender, EventArgs e)
        {
            if (_message == null || _message.Hiding && lblErrors.Height <= 0)
            {
                lblErrors.Height           = 0;
                tmrAnimationTimer.Interval = SHOW_MESSAGE_FPS;
                tmrAnimationTimer.Stop();
                _message = null;
                return;
            }

            if (tmrAnimationTimer.Interval == (_message.Duration ?? PAUSE_SHOW_MESSAGE))
            {
                tmrAnimationTimer.Interval = SHOW_MESSAGE_FPS;
            }

            if (!_message.Hiding && lblErrors.Height < _message.Height)
            {
                lblErrors.Height += SHOW_MESSAGE_SPEED;
                return;
            }

            if (_mouseOverErrorMessage)
            {
                return;
            }

            if (_message.Hiding)
            {
                lblErrors.Height -= SHOW_MESSAGE_SPEED;
                return;
            }
            _message.Hiding            = true;
            tmrAnimationTimer.Interval = _message.Duration ?? PAUSE_SHOW_MESSAGE;
        }