Example #1
0
        /// <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);
            }
        }
Example #2
0
        /// <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);
            }
        }
Example #3
0
        /// <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;
        }
Example #4
0
 /// <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;
     }
 }
Example #5
0
        /// <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);
            }
        }
Example #6
0
        /// <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;
        }