/// <summary> /// 根据鼠标不同的位置进行大小调整 /// </summary> private void ChangeFormSize() { //为什么要加入一个位置上面的判断呢,这是为了一个细节考虑的,如果不加判断,拖动起来就会感觉怪怪的,自己试一下。 Point mousePos = PointToClient(MousePosition); //上 if (mousePos.X > m_FormEdge && mousePos.X < this.Width - m_FormEdge && mousePos.Y <= m_FormEdge && b_IsMouseDown && m_MousePosition == VistaMousePosition.NORMAL) { m_MousePosition = VistaMousePosition.TOP; } //下 else if (mousePos.X > m_FormEdge && mousePos.X < this.Width - m_FormEdge && mousePos.Y > this.Height - m_FormEdge && b_IsMouseDown && m_MousePosition == VistaMousePosition.NORMAL) { m_MousePosition = VistaMousePosition.BOTTOM; } //左 else if (mousePos.X <= m_FormEdge && mousePos.Y > m_FormEdge && mousePos.Y < this.Height - m_FormEdge && b_IsMouseDown && m_MousePosition == VistaMousePosition.NORMAL) { m_MousePosition = VistaMousePosition.LEFT; } //右 else if (mousePos.X >= this.Width - m_FormEdge && mousePos.Y > m_FormEdge && mousePos.Y < this.Height - m_FormEdge && b_IsMouseDown && m_MousePosition == VistaMousePosition.NORMAL) { m_MousePosition = VistaMousePosition.RIGHT; } //左上角 else if (mousePos.X <= m_FormEdge && mousePos.Y <= m_FormEdge && b_IsMouseDown && m_MousePosition == VistaMousePosition.NORMAL) { m_MousePosition = VistaMousePosition.LEFTTOP; } //右上角 else if (mousePos.X >= this.Width - m_FormEdge && mousePos.Y <= m_FormEdge && b_IsMouseDown && m_MousePosition == VistaMousePosition.NORMAL) { m_MousePosition = VistaMousePosition.RIGHTTOP; } //左下角 else if (mousePos.X <= m_FormEdge && mousePos.Y >= this.Height - m_FormEdge && b_IsMouseDown && m_MousePosition == VistaMousePosition.NORMAL) { m_MousePosition = VistaMousePosition.LEFTBOTTOM; } //右下角 else if (mousePos.X >= this.Width - m_FormEdge && mousePos.Y >= this.Height - m_FormEdge && b_IsMouseDown && m_MousePosition == VistaMousePosition.NORMAL) { m_MousePosition = VistaMousePosition.RIGHTBOTTOM; } //默认 //else //{ // m_MousePosition = VistaMousePosition.NORMAL; //} if (b_IsMouseDown) { if (m_MousePosition != VistaMousePosition.NORMAL) { int right, bottom; switch (m_MousePosition) { case VistaMousePosition.TOP: bottom = this.Bottom; this.Top = MousePosition.Y; this.Height = bottom - this.Top; break; case VistaMousePosition.BOTTOM: this.Height = MousePosition.Y - this.Top; break; case VistaMousePosition.LEFT: right = this.Right; this.Left = MousePosition.X; this.Width = right - this.Left; break; case VistaMousePosition.RIGHT: this.Width = Control.MousePosition.X - this.Left; break; case VistaMousePosition.LEFTTOP: right = this.Right; bottom = this.Bottom; this.Top = MousePosition.Y; this.Height = bottom - this.Top; this.Left = MousePosition.X; this.Width = right - this.Left; break; case VistaMousePosition.RIGHTTOP: bottom = this.Bottom; this.Top = MousePosition.Y; this.Height = bottom - this.Top; this.Width = Control.MousePosition.X - this.Left; break; case VistaMousePosition.LEFTBOTTOM: right = this.Right; this.Height = MousePosition.Y - this.Top; this.Left = MousePosition.X; this.Width = right - this.Left; break; case VistaMousePosition.RIGHTBOTTOM: this.Height = MousePosition.Y - this.Top; this.Width = Control.MousePosition.X - this.Left; break; } Invalidate(false); b_IsChangingSize = true; } } }
private void VistaForm_MouseUp(object sender, MouseEventArgs e) { b_IsChangingSize = false; b_IsMouseDown = false; b_IsMoveForm = false; m_MousePosition = VistaMousePosition.NORMAL; }