private void control_MouseDown(object sender, MouseEventArgs e) { DragControlProperty controlProperty = this.GetControlProperty(sender as Control); controlProperty.PositionMovePoint = e.Location; controlProperty.SizeChangeMovePoint = e.Location; }
private void control_MouseMove(object sender, MouseEventArgs e) { Control control = sender as Control; DragControlProperty controlProperty = this.GetControlProperty(control); if (e.Button != MouseButtons.Left) { this.m_MousePointPosition = this.MousePointPosition(control.Size, e); switch (this.m_MousePointPosition) { case EnumMousePointPosition.MouseSizeNone: Cursor.Current = Cursors.Arrow; break; case EnumMousePointPosition.MouseSizeRight: Cursor.Current = Cursors.SizeWE; break; case EnumMousePointPosition.MouseSizeLeft: Cursor.Current = Cursors.SizeWE; break; case EnumMousePointPosition.MouseSizeBottom: Cursor.Current = Cursors.SizeNS; break; case EnumMousePointPosition.MouseSizeTop: Cursor.Current = Cursors.SizeNS; break; case EnumMousePointPosition.MouseSizeTopLeft: Cursor.Current = Cursors.SizeNWSE; break; case EnumMousePointPosition.MouseSizeTopRight: Cursor.Current = Cursors.SizeNESW; break; case EnumMousePointPosition.MouseSizeBottomLeft: Cursor.Current = Cursors.SizeNESW; break; case EnumMousePointPosition.MouseSizeBottomRight: Cursor.Current = Cursors.SizeNWSE; break; case EnumMousePointPosition.MouseDrag: Cursor.Current = Cursors.SizeAll; break; } } else { switch (this.m_MousePointPosition) { case EnumMousePointPosition.MouseSizeRight: control.Width = (control.Width + e.X) - controlProperty.SizeChangeMovePoint.X; controlProperty.SizeChangeMovePoint = e.Location; break; case EnumMousePointPosition.MouseSizeLeft: control.Left = (control.Left + e.X) - controlProperty.PositionMovePoint.X; control.Width -= e.X - controlProperty.PositionMovePoint.X; break; case EnumMousePointPosition.MouseSizeBottom: control.Height = (control.Height + e.Y) - controlProperty.SizeChangeMovePoint.Y; controlProperty.SizeChangeMovePoint = e.Location; break; case EnumMousePointPosition.MouseSizeTop: control.Top += e.Y - controlProperty.PositionMovePoint.Y; control.Height -= e.Y - controlProperty.PositionMovePoint.Y; break; case EnumMousePointPosition.MouseSizeTopLeft: control.Left = (control.Left + e.X) - controlProperty.PositionMovePoint.X; control.Top += e.Y - controlProperty.PositionMovePoint.Y; control.Width -= e.X - controlProperty.PositionMovePoint.X; control.Height -= e.Y - controlProperty.PositionMovePoint.Y; break; case EnumMousePointPosition.MouseSizeTopRight: control.Top += e.Y - controlProperty.PositionMovePoint.Y; control.Width += e.X - controlProperty.SizeChangeMovePoint.X; control.Height -= e.Y - controlProperty.PositionMovePoint.Y; controlProperty.SizeChangeMovePoint = e.Location; break; case EnumMousePointPosition.MouseSizeBottomLeft: control.Left = (control.Left + e.X) - controlProperty.PositionMovePoint.X; control.Width -= e.X - controlProperty.PositionMovePoint.X; control.Height = (control.Height + e.Y) - controlProperty.SizeChangeMovePoint.Y; controlProperty.SizeChangeMovePoint = e.Location; break; case EnumMousePointPosition.MouseSizeBottomRight: control.Width = (control.Width + e.X) - controlProperty.SizeChangeMovePoint.X; control.Height = (control.Height + e.Y) - controlProperty.SizeChangeMovePoint.Y; controlProperty.SizeChangeMovePoint = e.Location; break; case EnumMousePointPosition.MouseDrag: control.Left = (control.Left + e.X) - controlProperty.PositionMovePoint.X; control.Top = (control.Top + e.Y) - controlProperty.PositionMovePoint.Y; break; } if (control.Width < 10) { control.Width = 10; } if (control.Height < 10) { control.Height = 10; } } }
void control_MouseMove(object sender, MouseEventArgs e) { Control lCtrl = (sender as Control); DragControlProperty property = GetControlProperty(lCtrl); if (e.Button == MouseButtons.Left) { switch (m_MousePointPosition) { case EnumMousePointPosition.MouseDrag: lCtrl.Left = lCtrl.Left + e.X - property.PositionMovePoint.X; lCtrl.Top = lCtrl.Top + e.Y - property.PositionMovePoint.Y; break; case EnumMousePointPosition.MouseSizeBottom: lCtrl.Height = lCtrl.Height + e.Y - property.SizeChangeMovePoint.Y; property.SizeChangeMovePoint = e.Location; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeBottomRight: lCtrl.Width = lCtrl.Width + e.X - property.SizeChangeMovePoint.X; lCtrl.Height = lCtrl.Height + e.Y - property.SizeChangeMovePoint.Y; property.SizeChangeMovePoint = e.Location; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeRight: lCtrl.Width = lCtrl.Width + e.X - property.SizeChangeMovePoint.X; // lCtrl.Height = lCtrl.Height + e.Y - property.p1.Y; property.SizeChangeMovePoint = e.Location; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTop: lCtrl.Top = lCtrl.Top + (e.Y - property.PositionMovePoint.Y); lCtrl.Height = lCtrl.Height - (e.Y - property.PositionMovePoint.Y); break; case EnumMousePointPosition.MouseSizeLeft: lCtrl.Left = lCtrl.Left + e.X - property.PositionMovePoint.X; lCtrl.Width = lCtrl.Width - (e.X - property.PositionMovePoint.X); break; case EnumMousePointPosition.MouseSizeBottomLeft: lCtrl.Left = lCtrl.Left + e.X - property.PositionMovePoint.X; lCtrl.Width = lCtrl.Width - (e.X - property.PositionMovePoint.X); lCtrl.Height = lCtrl.Height + e.Y - property.SizeChangeMovePoint.Y; property.SizeChangeMovePoint = e.Location; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTopRight: lCtrl.Top = lCtrl.Top + (e.Y - property.PositionMovePoint.Y); lCtrl.Width = lCtrl.Width + (e.X - property.SizeChangeMovePoint.X); lCtrl.Height = lCtrl.Height - (e.Y - property.PositionMovePoint.Y); property.SizeChangeMovePoint = e.Location; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTopLeft: lCtrl.Left = lCtrl.Left + e.X - property.PositionMovePoint.X; lCtrl.Top = lCtrl.Top + (e.Y - property.PositionMovePoint.Y); lCtrl.Width = lCtrl.Width - (e.X - property.PositionMovePoint.X); lCtrl.Height = lCtrl.Height - (e.Y - property.PositionMovePoint.Y); break; default: break; } if (lCtrl.Width < MinWidth) { lCtrl.Width = MinWidth; } if (lCtrl.Height < MinHeight) { lCtrl.Height = MinHeight; } } else { m_MousePointPosition = MousePointPosition(lCtrl.Size, e); //'判断光标的位置状态 switch (m_MousePointPosition) //'改变光标 { case EnumMousePointPosition.MouseSizeNone: Cursor.Current = Cursors.Arrow; //'箭头 break; case EnumMousePointPosition.MouseDrag: Cursor.Current = Cursors.SizeAll; //'四方向 break; case EnumMousePointPosition.MouseSizeBottom: Cursor.Current = Cursors.SizeNS; //'南北 break; case EnumMousePointPosition.MouseSizeTop: Cursor.Current = Cursors.SizeNS; //'南北 break; case EnumMousePointPosition.MouseSizeLeft: Cursor.Current = Cursors.SizeWE; //'东西 break; case EnumMousePointPosition.MouseSizeRight: Cursor.Current = Cursors.SizeWE; //'东西 break; case EnumMousePointPosition.MouseSizeBottomLeft: Cursor.Current = Cursors.SizeNESW; //'东北到南西 break; case EnumMousePointPosition.MouseSizeBottomRight: Cursor.Current = Cursors.SizeNWSE; //'东南到西北 break; case EnumMousePointPosition.MouseSizeTopLeft: Cursor.Current = Cursors.SizeNWSE; //'东南到西北 break; case EnumMousePointPosition.MouseSizeTopRight: Cursor.Current = Cursors.SizeNESW; //'东北到南西 break; default: break; } } }