protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); if (DesignMode) { return; } if (K_ResizeAble) { bool isChildUnderMouse = GetChildAtPoint(e.Location) != null; if (e.Location.X < BORDER_WIDTH && e.Location.Y > Height - BORDER_WIDTH && !isChildUnderMouse && !_formIsMaximized) { _resizeDir = KResizeDirection.BottomLeft; Cursor = Cursors.SizeNESW; } else if (e.Location.X < BORDER_WIDTH && !isChildUnderMouse && !_formIsMaximized) { _resizeDir = KResizeDirection.Left; Cursor = Cursors.SizeWE; } else if (e.Location.X > Width - BORDER_WIDTH && e.Location.Y > Height - BORDER_WIDTH && !isChildUnderMouse && !_formIsMaximized) { _resizeDir = KResizeDirection.BottomRight; Cursor = Cursors.SizeNWSE; } else if (e.Location.X > Width - BORDER_WIDTH && !isChildUnderMouse && !_formIsMaximized) { _resizeDir = KResizeDirection.Right; Cursor = Cursors.SizeWE; } else if (e.Location.Y > Height - BORDER_WIDTH && !isChildUnderMouse && !_formIsMaximized) { _resizeDir = KResizeDirection.Bottom; Cursor = Cursors.SizeNS; } else { _resizeDir = KResizeDirection.None; if (_resizeCursors.Contains(Cursor)) { Cursor = Cursors.Default; } } } UpdateButtons(e); }
/// <summary> /// 改变窗体的大小:拖动边框改变 /// </summary> /// <param name="direction">改变的方向</param> private void ResizeForm(KResizeDirection direction) { if (DesignMode) { return; } int dir = -1; switch (direction) { case KResizeDirection.BottomLeft: dir = HT_BOTTOMLEFT; break; case KResizeDirection.Left: dir = HT_LEFT; break; case KResizeDirection.Right: dir = HT_RIGHT; break; case KResizeDirection.BottomRight: dir = HT_BOTTOMRIGHT; break; case KResizeDirection.Bottom: dir = HT_BOTTOM; break; } ReleaseCapture(); if (dir != -1) { SendMessage(Handle, WM_NCLBUTTONDOWN, dir, 0); } }