/// <summary> /// 鼠标移动事件(调整窗体大小). /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FrmStyle_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { //如果最大化则不触发事件. if (this.WindowState == System.Windows.Forms.FormWindowState.Maximized) { return; } //鼠标距界面左上角的坐标 Point mouseLocation = new Point(System.Windows.Forms.Control.MousePosition.X - this.Location.X, System.Windows.Forms.Control.MousePosition.Y - this.Location.Y); //如果允许调整大小 if (this.IsMouseDown && this.loactionStyle != MouseLocationStyle.S22_MiddelCenter) { //调整大小 if (this.LastMoustLocation == null || Math.Abs(this.LastMoustLocation.X - mouseLocation.X) >= 5 || Math.Abs(this.LastMoustLocation.Y - mouseLocation.Y) >= 5) { this.ChangeSize(mouseLocation, this.loactionStyle); this.LastMoustLocation = new Point(mouseLocation.X, mouseLocation.Y); } } else { //鼠标位置 this.loactionStyle = this.GetLocationStyle(mouseLocation); this.Cursor = this.GetCursorByMouseLocationStyle(this.loactionStyle); } }
/// <summary> /// 根据鼠标位置类型,返回鼠标光标类型. /// </summary> /// <param name="mouseStyle">鼠标位置类型</param> /// <returns>鼠标光标类型</returns> private System.Windows.Forms.Cursor GetCursorByMouseLocationStyle(MouseLocationStyle mouseStyle) { switch (mouseStyle) { case MouseLocationStyle.S11_LeftTop: return(System.Windows.Forms.Cursors.SizeNWSE); case MouseLocationStyle.S12_CenterTop: return(System.Windows.Forms.Cursors.SizeNS); case MouseLocationStyle.S13_RightTop: return(System.Windows.Forms.Cursors.SizeNESW); case MouseLocationStyle.S21_MiddleLeft: return(System.Windows.Forms.Cursors.SizeWE); case MouseLocationStyle.S22_MiddelCenter: return(System.Windows.Forms.Cursors.Default); case MouseLocationStyle.S23_RightMiddel: return(System.Windows.Forms.Cursors.SizeWE); case MouseLocationStyle.S31_LeftBottom: return(System.Windows.Forms.Cursors.SizeNESW); case MouseLocationStyle.S32_CenterBottom: return(System.Windows.Forms.Cursors.SizeNS); case MouseLocationStyle.S33_RightBottom: return(System.Windows.Forms.Cursors.SizeNWSE); default: return(System.Windows.Forms.Cursors.Default); } }
/// <summary> /// 根据鼠标坐标和鼠标坐标类型调整窗体大小. /// </summary> /// <param name="mouseLocation">鼠标坐标</param> /// <param name="mouseStyle">鼠标位置类型</param> private void ChangeSize(Point mouseLocation, MouseLocationStyle mouseStyle) { Size newSize = new Size(this.Width, this.Height); switch (mouseStyle) { case MouseLocationStyle.S11_LeftTop: //左上 newSize.Width -= mouseLocation.X; newSize.Height -= mouseLocation.Y; this.Location = new Point(this.Location.X + mouseLocation.X, this.Location.Y + mouseLocation.Y); break; case MouseLocationStyle.S12_CenterTop: //中上 newSize.Height -= mouseLocation.Y; this.Location = new Point(this.Location.X, this.Location.Y + mouseLocation.Y); break; case MouseLocationStyle.S13_RightTop: //右上 newSize.Width = mouseLocation.X; newSize.Height -= mouseLocation.Y; this.Location = new Point(this.Location.X, this.Location.Y + mouseLocation.Y); break; case MouseLocationStyle.S21_MiddleLeft: //左中 newSize.Width -= mouseLocation.X; this.Location = new Point(this.Location.X + mouseLocation.X, this.Location.Y); break; case MouseLocationStyle.S22_MiddelCenter: //中中【无需调整】 break; case MouseLocationStyle.S23_RightMiddel: //中右 newSize.Width = mouseLocation.X; break; case MouseLocationStyle.S31_LeftBottom: //左下 newSize.Width -= mouseLocation.X; newSize.Height = mouseLocation.Y; this.Location = new Point(this.Location.X + mouseLocation.X, this.Location.Y); break; case MouseLocationStyle.S32_CenterBottom: //中下 newSize.Height = mouseLocation.Y; break; case MouseLocationStyle.S33_RightBottom: //右下 newSize.Width = mouseLocation.X; newSize.Height = mouseLocation.Y; break; } this.Size = newSize; }
/// <summary> /// 根据鼠标位置类型,返回鼠标光标类型. /// </summary> /// <param name="mouseStyle">鼠标位置类型</param> /// <returns>鼠标光标类型</returns> private System.Windows.Forms.Cursor GetCursorByMouseLocationStyle(MouseLocationStyle mouseStyle) { switch (mouseStyle) { case MouseLocationStyle.S11_LeftTop: return System.Windows.Forms.Cursors.SizeNWSE; case MouseLocationStyle.S12_CenterTop: return System.Windows.Forms.Cursors.SizeNS; case MouseLocationStyle.S13_RightTop: return System.Windows.Forms.Cursors.SizeNESW; case MouseLocationStyle.S21_MiddleLeft: return System.Windows.Forms.Cursors.SizeWE; case MouseLocationStyle.S22_MiddelCenter: return System.Windows.Forms.Cursors.Default; case MouseLocationStyle.S23_RightMiddel: return System.Windows.Forms.Cursors.SizeWE; case MouseLocationStyle.S31_LeftBottom: return System.Windows.Forms.Cursors.SizeNESW; case MouseLocationStyle.S32_CenterBottom: return System.Windows.Forms.Cursors.SizeNS; case MouseLocationStyle.S33_RightBottom: return System.Windows.Forms.Cursors.SizeNWSE; default: return System.Windows.Forms.Cursors.Default; } }
/// <summary> /// 鼠标移动事件(调整窗体大小). /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FrmStyle_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { //如果最大化则不触发事件. if (this.WindowState == System.Windows.Forms.FormWindowState.Maximized) return; //鼠标距界面左上角的坐标 Point mouseLocation = new Point(System.Windows.Forms.Control.MousePosition.X - this.Location.X, System.Windows.Forms.Control.MousePosition.Y - this.Location.Y); //如果允许调整大小 if (this.IsMouseDown && this.loactionStyle != MouseLocationStyle.S22_MiddelCenter) { //调整大小 if (this.LastMoustLocation == null || Math.Abs(this.LastMoustLocation.X - mouseLocation.X) >= 5 || Math.Abs(this.LastMoustLocation.Y - mouseLocation.Y) >= 5) { this.ChangeSize(mouseLocation, this.loactionStyle); this.LastMoustLocation = new Point(mouseLocation.X, mouseLocation.Y); } } else { //鼠标位置 this.loactionStyle = this.GetLocationStyle(mouseLocation); this.Cursor = this.GetCursorByMouseLocationStyle(this.loactionStyle); } }
/// <summary> /// 根据鼠标坐标和鼠标坐标类型调整窗体大小. /// </summary> /// <param name="mouseLocation">鼠标坐标</param> /// <param name="mouseStyle">鼠标位置类型</param> private void ChangeSize(Point mouseLocation, MouseLocationStyle mouseStyle) { Size newSize = new Size(this.Width, this.Height); switch (mouseStyle) { case MouseLocationStyle.S11_LeftTop: //左上 newSize.Width -= mouseLocation.X; newSize.Height -= mouseLocation.Y; this.Location = new Point(this.Location.X + mouseLocation.X, this.Location.Y + mouseLocation.Y); break; case MouseLocationStyle.S12_CenterTop: //中上 newSize.Height -= mouseLocation.Y; this.Location = new Point(this.Location.X, this.Location.Y + mouseLocation.Y); break; case MouseLocationStyle.S13_RightTop: //右上 newSize.Width = mouseLocation.X; newSize.Height -= mouseLocation.Y; this.Location = new Point(this.Location.X, this.Location.Y + mouseLocation.Y); break; case MouseLocationStyle.S21_MiddleLeft: //左中 newSize.Width -= mouseLocation.X; this.Location = new Point(this.Location.X + mouseLocation.X, this.Location.Y); break; case MouseLocationStyle.S22_MiddelCenter: //中中【无需调整】 break; case MouseLocationStyle.S23_RightMiddel: //中右 newSize.Width = mouseLocation.X; break; case MouseLocationStyle.S31_LeftBottom: //左下 newSize.Width -= mouseLocation.X; newSize.Height = mouseLocation.Y; this.Location = new Point(this.Location.X + mouseLocation.X, this.Location.Y); break; case MouseLocationStyle.S32_CenterBottom: //中下 newSize.Height = mouseLocation.Y; break; case MouseLocationStyle.S33_RightBottom: //右下 newSize.Width = mouseLocation.X; newSize.Height = mouseLocation.Y; break; } this.Size = newSize; }