/// <summary> /// 引发 System.Windows.Forms.Form.MouseDown。 /// </summary> /// <param name="e">包含事件数据的 System.Windows.Forms.MouseEventArgs。</param> protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); if (TitleBarMenuRect.Contains(e.Location)) { TitleBarMenuState = TMouseState.Down; } }
/// <summary> /// 引发 System.Windows.Forms.Form.MouseUp。 /// </summary> /// <param name="e">包含事件数据的 System.Windows.Forms.MouseEventArgs。</param> protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); if (TitleBarMenuRect.Contains(e.Location) && TitleBarMenuState == TMouseState.Down) { TitleBarMenuState = TMouseState.Up; MenuClick?.Invoke(this, EventArgs.Empty); var contextMenuStrip = MenuLabel.ContextMenuStrip; if (contextMenuStrip != null) { contextMenuStrip.Closed -= ContextMenuStrip_Closed; contextMenuStrip.Closed += ContextMenuStrip_Closed; var point = PointToScreen(new Point(TitleBarMenuRect.Left + TitleBarMenuRect.Width / 2 - 3, TitleBarMenuRect.Top + TitleBarMenuRect.Height)); contextMenuStrip.Show(point); } } }
/// <summary> /// 引发 System.Windows.Forms.Form.MouseMove。 /// </summary> /// <param name="e">包含事件数据的 System.Windows.Forms.MouseEventArgs。</param> protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); if (e.Button == MouseButtons.Left) { return; } var flag = true; string tipText = null; var point = e.Location; if (CloseContains(point)) { flag = false; if (CloseState != TMouseState.Move) { CloseState = TMouseState.Move; tipText = "关闭"; } } else { CloseState = TMouseState.Normal; } if (MiniRect.Contains(point)) { flag = false; if (MinState != TMouseState.Move) { MinState = TMouseState.Move; tipText = "最小化"; } } else { MinState = TMouseState.Normal; } if (MaxRect.Contains(point)) { flag = false; if (MaxState != TMouseState.Move) { MaxState = TMouseState.Move; tipText = WindowState == FormWindowState.Maximized ? "还原" : "最大化"; } } else { MaxState = TMouseState.Normal; } if (TitleBarMenuRect.Contains(e.Location)) { flag = false; if (TitleBarMenuState != TMouseState.Move) { TitleBarMenuState = TMouseState.Move; tipText = "菜单栏"; } } else { TitleBarMenuState = TMouseState.Normal; } if (tipText != null) { ShowTooTip(tipText); } if (flag) { HideToolTip(); } }