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