It is very simple, mainly MouseDown, MouseEleave, MouseMove event for design controls. Step by step: 1, define an enumeration type, describe the cursor status private enummouseposition {mouseesizenone = 0, // 'no mouseesizeright = 1, //' stretched the right box mouseSizeleft = 2, // 'stretch the left Box MouseSizebottom = 3, // 'stretched next border mouseesizetop = 4, //' stretched on the border mouseesizetopleft = 5, // 'stretched the upper corner MOUSETOPRIGHT = 6, //' stretched the right upper corner MOUSESIZEBOTTOMLEFT = 7, // 'Stretching the lower left corner MOUSESIZEBOTTOMRIGHT = 8, //' stretched the right lower corner mousedrag = 9 // 'mouse drag} 2, define several variables const amount = 5; const Int minWidth = 10; const Int minHeight = 10; private EnumMousePointPosition m_MousePointPosition; private Point p, p1; 3, define your own MyMouseDown event private void MyMouseDown (object sender, System.Windows.Forms.MouseEventArgs e) {pX = eX; pY = eY;
p1.X = e.X; p1.Y = e.Y;} 4, define their own event MyMouseLeave private void MyMouseLeave (object sender, System.EventArgs e) {m_MousePointPosition = EnumMousePointPosition.MouseSizeNone; this.Cursor = Cursors.Arrow;}
5. Design a function to determine the spikes in the style private enummousepositionPosition MousePoint EnummousePosition MousePoint EnummousepositionPosition MousePointPosition (Size Size, System.Windows.Forms.MouseEventArgs E) {IF ((ex> = -1 * band) | (EX <= size.width) ) | (EY> = -1 * band) {if
if (e.Button == MouseButtons.Left) {switch (m_MousePointPosition) {case EnumMousePointPosition.MouseDrag: lCtrl.Left = lCtrl.Left eX - pX; lCtrl.Top = lCtrl.Top eY - pY; break; case EnumMousePointPosition.MouseSizeBottom : Lctrl.height = lctrl.Height Ey - p1.y; p1.x = ex; p1.y = EY; // 'records the current point Break; Case EnumMousePosition.MouseSizeBottomright: lctrl.Width = LCTRL. Width EX - P1.X; lctrl.height = lctrl.height Ey - p1.y; p1.x = ex; p1.y = EY; // 'records the current point Break; Case EnumMousePosition.MouseSizeright : Lctrl.width = lctrl.width ex - p1.x; // lctrl.height = lctrl.Height Ey - p1.y; p1.x = EX; p1.y = EY; // 'record cursor drag a current point of break; case EnumMousePointPosition.MouseSizeTop: lCtrl.Top = lCtrl.Top (eY - pY); lCtrl.Height = lCtrl.Height - (eY - pY); break; case EnumMousePointPosition.MouseSizeLeft: lCtrl.Left = lCtrl .Left EX - PX; LCTRL.WIDTH = LCTRL.WIDTH - (EX - PX); Break; Case EnumMousePosition.MouseSizeBottomleft: lctrl.LCT = LCTRL.LEFT EX - PX; lctrl.width = lctrl.width - (EX - PX ); Lctrl.height = lctrl.Height EY - P1.Y; p1.x = ex; p1.y = EY; // 'Record the current point Break; Case EnumMousePosition.MouseSizeTopRight: lctrl.top = lctrl. TOP (EY - PY); lctrl.width = lctrl.width (ex - p1.x); lctrl.height = lctrl.Height - (EY - PY); p1.x = ex; p1.y = EY; // 'Record the current point Break dragged by the cursor;
Case enummouseposition.mousesizetopleft: lctrl.left = lctrl.LCTRL.EX - PX; lctrl.top = lctrl.top (EY - py); lctrl.width = lctrl.width - (ex - px); lctrl.height = lctrl . HEIGHT - (EY - PY); Break; default: Break;} IF (LCTRL.WIDTH } Else {m_MousePointPosition = MousePointPosition (lCtrl.Size, e); // 'position of the cursor is determined state switch (m_MousePointPosition) //' to change the cursor {case EnumMousePointPosition.MouseSizeNone: this.Cursor = Cursors.Arrow; // 'arrow break ; case EnumMousePointPosition.MouseDrag: this.Cursor = Cursors.SizeAll; // 'four-directional break; case EnumMousePointPosition.MouseSizeBottom: this.Cursor = Cursors.SizeNS; //' north and south break; case EnumMousePointPosition.MouseSizeTop: this.Cursor = Cursors .SizeNS; // 'north and south break; case EnumMousePointPosition.MouseSizeLeft: this.Cursor = Cursors.SizeWE; //' stuff break; case EnumMousePointPosition.MouseSizeRight: this.Cursor = Cursors.SizeWE; // 'stuff break; case EnumMousePointPosition. MouseSizebottomleft: this.cursor = cursors.siznesw; // 'Northeast to South West Break; Case EnummousePosition.MouseSizeBottomright: this.cursor = cursors.sizenwse; //' southeast to Northwest BREAK; CAS e EnumMousePointPosition.MouseSizeTopLeft: this.Cursor = Cursors.SizeNWSE; // 'northwest to southeast break; case EnumMousePointPosition.MouseSizeTopRight: this.Cursor = Cursors.SizeNESW; //' Northeast to Southwest break; default: break;}} } 7, make a initialization process, bind all controls on the interface Panel1, MYMOUSEDOWN, MyMouseLeave, MyMouseMove event, remember to execute it first in Form initialization or Form_Load. Private void initproperty () {for (int i = 0; i