//定义自己的MyMouseLeave事件 public void MyMouseLeave(object sender, System.EventArgs e) { m_MousePointPosition = EnumMousePointPosition.MouseSizeNone; ((Control)sender).Cursor = Cursors.Arrow; ((Control)sender).BackColor = Color.White; }
/// <summary> /// 鼠标离开事件需要改进 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MyMouseLeave(object sender, EventArgs e) { if (doc == null) { doc = new XmlDocument(); } Control s = (Control)sender; XmlNodeList nodes = doc.GetElementsByTagName(s.Name); XmlElement xn; if (nodes.Count != 1) { xn = doc.CreateElement(s.Name); } else { xn = (XmlElement)doc.GetElementsByTagName(s.Name)[0]; } xn.SetAttribute("Top", s.Top.ToString()); xn.SetAttribute("Left", s.Left.ToString()); xn.SetAttribute("Width", s.Width.ToString()); xn.SetAttribute("Height", s.Height.ToString()); XmlNodeList xnl = doc.GetElementsByTagName(this.Name); XmlElement xnp; if (xnl.Count < 1) { xnp = doc.CreateElement(this.Name); } else { xnp = (XmlElement)xnl[0]; } xnp.AppendChild(xn); doc.AppendChild(xnp); doc.Save(xmlDocPath); m_MousePointPosition = EnumMousePointPosition.MouseSizeNone; this.Cursor = Cursors.Arrow; //((Control)sender).BackColor = Color.Transparent; }
/*定义自己的MyMouseMove事件,在这个事件里,会使用上面设计的函数*/ private void MyMouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { Control lCtrl = (sender as Control); if (e.Button == MouseButtons.Left) { switch (m_MousePointPosition) { case EnumMousePointPosition.MouseDrag: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Top = lCtrl.Top + e.Y - p.Y; /*在数据库里修改一条记录*/ string mdconn = "server=localhost;uid=root;Password=password;database=local;charset=utf8"; DBOperateClass.Run_SQL("update video_design_info set Control_Update = '1' where Control_Name = '" + lCtrl.Name + "'", mdconn); for (int i = 0; i < videoCount; i++) { if (videoPictureBox[i].Name == lCtrl.Name) { videoPropertiesClass[i].X = lCtrl.Location.X.ToString(); videoPropertiesClass[i].Y = lCtrl.Location.Y.ToString(); videoPropertiesClass[i].Width = lCtrl.Size.Width.ToString(); videoPropertiesClass[i].Height = lCtrl.Size.Height.ToString(); } } break; case EnumMousePointPosition.MouseSizeBottom: lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 /*在数据库里修改一条记录*/ string msbconn = "server=localhost;uid=root;Password=password;database=local;charset=utf8"; DBOperateClass.Run_SQL("update video_design_info set Control_Update = '1' where Control_Name = '" + lCtrl.Name + "'", msbconn); for (int i = 0; i < videoCount; i++) { if (videoPictureBox[i].Name == lCtrl.Name) { videoPropertiesClass[i].X = lCtrl.Location.X.ToString(); videoPropertiesClass[i].Y = lCtrl.Location.Y.ToString(); videoPropertiesClass[i].Width = lCtrl.Size.Width.ToString(); videoPropertiesClass[i].Height = lCtrl.Size.Height.ToString(); } } break; case EnumMousePointPosition.MouseSizeBottomRight: lCtrl.Width = lCtrl.Width + e.X - p1.X; lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 /*在数据库里修改一条记录*/ string msbrconn = "server=localhost;uid=root;Password=password;database=local;charset=utf8"; DBOperateClass.Run_SQL("update video_design_info set Control_Update = '1' where Control_Name = '" + lCtrl.Name + "'", msbrconn); for (int i = 0; i < videoCount; i++) { if (videoPictureBox[i].Name == lCtrl.Name) { videoPropertiesClass[i].X = lCtrl.Location.X.ToString(); videoPropertiesClass[i].Y = lCtrl.Location.Y.ToString(); videoPropertiesClass[i].Width = lCtrl.Size.Width.ToString(); videoPropertiesClass[i].Height = lCtrl.Size.Height.ToString(); } } break; case EnumMousePointPosition.MouseSizeRight: lCtrl.Width = lCtrl.Width + e.X - p1.X; // lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 /*在数据库里修改一条记录*/ string msrconn = "server=localhost;uid=root;Password=password;database=local;charset=utf8"; DBOperateClass.Run_SQL("update video_design_info set Control_Update = '1' where Control_Name = '" + lCtrl.Name + "'", msrconn); for (int i = 0; i < videoCount; i++) { if (videoPictureBox[i].Name == lCtrl.Name) { videoPropertiesClass[i].X = lCtrl.Location.X.ToString(); videoPropertiesClass[i].Y = lCtrl.Location.Y.ToString(); videoPropertiesClass[i].Width = lCtrl.Size.Width.ToString(); videoPropertiesClass[i].Height = lCtrl.Size.Height.ToString(); } } break; case EnumMousePointPosition.MouseSizeTop: lCtrl.Top = lCtrl.Top + (e.Y - p.Y); lCtrl.Height = lCtrl.Height - (e.Y - p.Y); /*在数据库里修改一条记录*/ string mstconn = "server=localhost;uid=root;Password=password;database=local;charset=utf8"; DBOperateClass.Run_SQL("update video_design_info set Control_Update = '1' where Control_Name = '" + lCtrl.Name + "'", mstconn); for (int i = 0; i < videoCount; i++) { if (videoPictureBox[i].Name == lCtrl.Name) { videoPropertiesClass[i].X = lCtrl.Location.X.ToString(); videoPropertiesClass[i].Y = lCtrl.Location.Y.ToString(); videoPropertiesClass[i].Width = lCtrl.Size.Width.ToString(); videoPropertiesClass[i].Height = lCtrl.Size.Height.ToString(); } } break; case EnumMousePointPosition.MouseSizeLeft: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Width = lCtrl.Width - (e.X - p.X); /*在数据库里修改一条记录*/ string mslconn = "server=localhost;uid=root;Password=password;database=local;charset=utf8"; DBOperateClass.Run_SQL("update video_design_info set Control_Update = '1' where Control_Name = '" + lCtrl.Name + "'", mslconn); for (int i = 0; i < videoCount; i++) { if (videoPictureBox[i].Name == lCtrl.Name) { videoPropertiesClass[i].X = lCtrl.Location.X.ToString(); videoPropertiesClass[i].Y = lCtrl.Location.Y.ToString(); videoPropertiesClass[i].Width = lCtrl.Size.Width.ToString(); videoPropertiesClass[i].Height = lCtrl.Size.Height.ToString(); } } break; case EnumMousePointPosition.MouseSizeBottomLeft: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Width = lCtrl.Width - (e.X - p.X); lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 /*在数据库里修改一条记录*/ string msblconn = "server=localhost;uid=root;Password=password;database=local;charset=utf8"; DBOperateClass.Run_SQL("update video_design_info set Control_Update = '1' where Control_Name = '" + lCtrl.Name + "'", msblconn); for (int i = 0; i < videoCount; i++) { if (videoPictureBox[i].Name == lCtrl.Name) { videoPropertiesClass[i].X = lCtrl.Location.X.ToString(); videoPropertiesClass[i].Y = lCtrl.Location.Y.ToString(); videoPropertiesClass[i].Width = lCtrl.Size.Width.ToString(); videoPropertiesClass[i].Height = lCtrl.Size.Height.ToString(); } } break; case EnumMousePointPosition.MouseSizeTopRight: lCtrl.Top = lCtrl.Top + (e.Y - p.Y); lCtrl.Width = lCtrl.Width + (e.X - p1.X); lCtrl.Height = lCtrl.Height - (e.Y - p.Y); p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 /*在数据库里修改一条记录*/ string mstrconn = "server=localhost;uid=root;Password=password;database=local;charset=utf8"; DBOperateClass.Run_SQL("update video_design_info set Control_Update = '1' where Control_Name = '" + lCtrl.Name + "'", mstrconn); for (int i = 0; i < videoCount; i++) { if (videoPictureBox[i].Name == lCtrl.Name) { videoPropertiesClass[i].X = lCtrl.Location.X.ToString(); videoPropertiesClass[i].Y = lCtrl.Location.Y.ToString(); videoPropertiesClass[i].Width = lCtrl.Size.Width.ToString(); videoPropertiesClass[i].Height = lCtrl.Size.Height.ToString(); } } break; case EnumMousePointPosition.MouseSizeTopLeft: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Top = lCtrl.Top + (e.Y - p.Y); lCtrl.Width = lCtrl.Width - (e.X - p.X); lCtrl.Height = lCtrl.Height - (e.Y - p.Y); /*在数据库里修改一条记录*/ string mstlconn = "server=localhost;uid=root;Password=password;database=local;charset=utf8"; DBOperateClass.Run_SQL("update video_design_info set Control_Update = '1' where Control_Name = '" + lCtrl.Name + "'", mstlconn); for (int i = 0; i < videoCount; i++) { if (videoPictureBox[i].Name == lCtrl.Name) { videoPropertiesClass[i].X = lCtrl.Location.X.ToString(); videoPropertiesClass[i].Y = lCtrl.Location.Y.ToString(); videoPropertiesClass[i].Width = lCtrl.Size.Width.ToString(); videoPropertiesClass[i].Height = lCtrl.Size.Height.ToString(); } } 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: this.Cursor = Cursors.Arrow; //'箭头 break; case EnumMousePointPosition.MouseDrag: this.Cursor = Cursors.SizeAll; //'四方向 break; case EnumMousePointPosition.MouseSizeBottom: this.Cursor = Cursors.SizeNS; //'南北 break; case EnumMousePointPosition.MouseSizeTop: this.Cursor = Cursors.SizeNS; //'南北 break; case EnumMousePointPosition.MouseSizeLeft: this.Cursor = Cursors.SizeWE; //'东西 break; case EnumMousePointPosition.MouseSizeRight: this.Cursor = Cursors.SizeWE; //'东西 break; case EnumMousePointPosition.MouseSizeBottomLeft: this.Cursor = Cursors.SizeNESW; //'东北到南西 break; case EnumMousePointPosition.MouseSizeBottomRight: this.Cursor = Cursors.SizeNWSE; //'东南到西北 break; case EnumMousePointPosition.MouseSizeTopLeft: this.Cursor = Cursors.SizeNWSE; //'东南到西北 break; case EnumMousePointPosition.MouseSizeTopRight: this.Cursor = Cursors.SizeNESW; //'东北到南西 break; default: break; } } }
/*定义自己的MyMouseLeave事件*/ private void MyMouseLeave(object sender, System.EventArgs e) { m_MousePointPosition = EnumMousePointPosition.MouseSizeNone; this.Cursor = Cursors.Arrow; }
private void MyMouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { Control lCtrl = (sender as Control); if (e.Button == MouseButtons.Left) { switch (m_MousePointPosition) { case EnumMousePointPosition.MouseDrag: lCtrl.Left = lCtrl.Left + e.X - DownPoint.X; break; case EnumMousePointPosition.MouseSizeRight: lCtrl.Width = lCtrl.Width + e.X - CurrPoint.X; CurrPoint.X = e.X; CurrPoint.Y = e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeLeft: lCtrl.Left = lCtrl.Left + e.X - DownPoint.X; lCtrl.Width = lCtrl.Width - (e.X - DownPoint.X); break; default: break; } if (lCtrl.Width < MinWidth) lCtrl.Width = MinWidth; if (lCtrl.Width > this.Width) lCtrl.Width = this.Width; } else { m_MousePointPosition = MousePointPosition(lCtrl.Size, e); //'判断光标的位置状态 switch (m_MousePointPosition) //'改变光标 { case EnumMousePointPosition.MouseSizeNone: this.Cursor = Cursors.Arrow; //'箭头 break; case EnumMousePointPosition.MouseDrag: this.Cursor = Cursors.SizeAll; //'四方向 break; case EnumMousePointPosition.MouseSizeLeft: this.Cursor = Cursors.SizeWE; //'东西 break; case EnumMousePointPosition.MouseSizeRight: this.Cursor = Cursors.SizeWE; //'东西 break; default: break; } } }
void control_MouseLeave(object sender, EventArgs e) { m_MousePointPosition = EnumMousePointPosition.MouseSizeNone; Cursor.Current = Cursors.Arrow; }
//鼠标离开控件的事件 private void MyMouseLeave(object sender, System.EventArgs e) { m_MousePointPosition = EnumMousePointPosition.MouseSizeNone; this.Cursor = Cursors.Arrow; }
//鼠标移过控件的事件 private void MyMouseMove(object sender, MouseEventArgs e) { Control lCtrl = (sender as Control);//获得事件源 //左键按下移动 if (e.Button == MouseButtons.Left) { switch (m_MousePointPosition) { case EnumMousePointPosition.MouseDrag: lCtrl.Left = lCtrl.Left + e.X - m_lastPoint.X; lCtrl.Top = lCtrl.Top + e.Y - m_lastPoint.Y; break; case EnumMousePointPosition.MouseSizeBottom: lCtrl.Height = lCtrl.Height + e.Y - m_endPoint.Y; m_endPoint.X = e.X; m_endPoint.Y = e.Y; //记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeBottomRight: lCtrl.Width = lCtrl.Width + e.X - m_endPoint.X; lCtrl.Height = lCtrl.Height + e.Y - m_endPoint.Y; m_endPoint.X = e.X; m_endPoint.Y = e.Y; //记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeRight: lCtrl.Width = lCtrl.Width + e.X - m_endPoint.X; m_endPoint.X = e.X; m_endPoint.Y = e.Y; //记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTop: lCtrl.Top = lCtrl.Top + (e.Y - m_lastPoint.Y); lCtrl.Height = lCtrl.Height - (e.Y - m_lastPoint.Y); break; case EnumMousePointPosition.MouseSizeLeft: lCtrl.Left = lCtrl.Left + e.X - m_lastPoint.X; lCtrl.Width = lCtrl.Width - (e.X - m_lastPoint.X); break; case EnumMousePointPosition.MouseSizeBottomLeft: lCtrl.Left = lCtrl.Left + e.X - m_lastPoint.X; lCtrl.Width = lCtrl.Width - (e.X - m_lastPoint.X); lCtrl.Height = lCtrl.Height + e.Y - m_endPoint.Y; m_endPoint.X = e.X; m_endPoint.Y = e.Y; //记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTopRight: lCtrl.Top = lCtrl.Top + (e.Y - m_lastPoint.Y); lCtrl.Width = lCtrl.Width + (e.X - m_endPoint.X); lCtrl.Height = lCtrl.Height - (e.Y - m_lastPoint.Y); m_endPoint.X = e.X; m_endPoint.Y = e.Y; //记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTopLeft: lCtrl.Left = lCtrl.Left + e.X - m_lastPoint.X; lCtrl.Top = lCtrl.Top + (e.Y - m_lastPoint.Y); lCtrl.Width = lCtrl.Width - (e.X - m_lastPoint.X); lCtrl.Height = lCtrl.Height - (e.Y - m_lastPoint.Y); break; default: break; } if (lCtrl.Width < MinWidth) { lCtrl.Width = MinWidth; } if (lCtrl.Height < MinHeight) { lCtrl.Height = MinHeight; } if (lCtrl is PictureBox) { var pBox = lCtrl as PictureBox; // PictureBox的实际长宽和坐标 var pbw = pBox.Width; var pbh = pBox.Height; var pbx = pBox.Location.X; var pby = pBox.Location.Y; // 计算图片的相对长宽 var poh = pBox.Image.Width; var pow = pBox.Image.Height; // 计算图片的实际坐标和长宽 PropertyInfo rectangleProperty = pBox.GetType().GetProperty("ImageRectangle", BindingFlags.Instance | BindingFlags.NonPublic); Rectangle rectangle = (Rectangle)rectangleProperty.GetValue(pBox, null); // 图片的实际长宽 int pw = rectangle.Width; int ph = rectangle.Height; // 计算左和上留白 int black_left_width = (pw == pbw) ? 0 : (pbw - pw) / 2; int black_top_height = (ph == pbh) ? 0 : (pbh - ph) / 2; // 图片的实际坐标 var px = pbx + black_left_width; var py = pby + black_top_height; // 计算伸缩比 var scale = (double)ph / (double)poh; // 同步全局变量 _scale = scale; _px = px; _py = py; foreach (var item in _shopButtons) { // 计算按钮的原始长宽和坐标(相对图片{x=0,y=0,w=image.w,h=image.h}的像素坐标) var pointList = item.PointList; var box = pointList.Min(a => a.X); var boy = pointList.Min(a => a.Y); var bow = pointList.Max(a => a.X) - box; var boh = pointList.Max(a => a.Y) - boy; // 计算按钮的实际长宽和坐标(跟随相对图片、伸缩比和原始坐标乘以伸缩比) var bx = (int)(px + box * scale); var by = (int)(py + boy * scale); var bw = (int)(bow * scale); var bh = (int)(boh * scale); // 重绘按钮 var button = item.Button; button.Location = new Point(bx, by); button.Size = new Size(bw, bh); // 重绘文本-按钮的实际长宽 bWBox.Text = button.Width.ToString(); bHBox.Text = button.Height.ToString(); bXBox.Text = button.Location.X.ToString(); bYBox.Text = button.Location.Y.ToString(); // 重绘文本-按钮的原始长宽 bOWBox.Text = bow.ToString(); bOHBox.Text = boh.ToString(); bOXBox.Text = box.ToString(); bOYBox.Text = boy.ToString(); } // 重绘文本-PictureBox的实际长宽坐标 pbWBox.Text = pBox.Width.ToString(); pbHBox.Text = pBox.Height.ToString(); pbXBox.Text = pBox.Location.X.ToString(); pbYBox.Text = pBox.Location.Y.ToString(); // 重绘文本-图片的相对长宽 pOWBox.Text = pow.ToString(); pOHBox.Text = poh.ToString(); // 重绘文本-图片的实际长宽 pWBox.Text = pw.ToString(); pHBox.Text = ph.ToString(); pXBox.Text = px.ToString(); pYBox.Text = py.ToString(); // 伸缩比 scaleBox.Text = scale.ToString(); } if (lCtrl is Button) { var button = lCtrl as Button; bWBox.Text = button.Width.ToString(); bHBox.Text = button.Height.ToString(); bXBox.Text = button.Location.X.ToString(); bYBox.Text = button.Location.Y.ToString(); var pBox = pictureBox1; // 按钮的实际长宽和坐标 var bw = button.Width; var bh = button.Height; var bx = button.Left; var by = button.Top; // 按钮的相对长宽和坐标 通过图片的实际坐标和伸缩比 var px = _px; var py = _py; var scale = _scale; var bow = (int)(bw / scale); var boh = (int)(bh / scale); var box = (int)(((double)bx - px) / scale); var boy = (int)(((double)by - py) / scale); var item = _shopButtons.FirstOrDefault(a => a.Button == button); if (item != null) { item.PointList = new List <PointF> { new PointF { X = box, Y = boy }, new PointF { X = box + bow, Y = boy }, new PointF { X = box + bow, Y = boy + boh }, new PointF { X = box, Y = boy + boh } }; } // 重绘文本-按钮的实际长宽 bWBox.Text = button.Width.ToString(); bHBox.Text = button.Height.ToString(); bXBox.Text = button.Location.X.ToString(); bYBox.Text = button.Location.Y.ToString(); // 重绘文本-按钮的原始长宽 bOWBox.Text = bow.ToString(); bOHBox.Text = boh.ToString(); bOXBox.Text = box.ToString(); bOYBox.Text = boy.ToString(); } } else { //判断光标的位置状态 m_MousePointPosition = MousePointPosition(lCtrl.Size, e); switch (m_MousePointPosition) //改变光标 { case EnumMousePointPosition.MouseSizeNone: this.Cursor = Cursors.Arrow; //箭头 break; case EnumMousePointPosition.MouseDrag: this.Cursor = Cursors.SizeAll; //四方向 break; case EnumMousePointPosition.MouseSizeBottom: this.Cursor = Cursors.SizeNS; //南北 break; case EnumMousePointPosition.MouseSizeTop: this.Cursor = Cursors.SizeNS; //南北 break; case EnumMousePointPosition.MouseSizeLeft: this.Cursor = Cursors.SizeWE; //东西 break; case EnumMousePointPosition.MouseSizeRight: this.Cursor = Cursors.SizeWE; //东西 break; case EnumMousePointPosition.MouseSizeBottomLeft: this.Cursor = Cursors.SizeNESW; //东北到南西 break; case EnumMousePointPosition.MouseSizeBottomRight: this.Cursor = Cursors.SizeNWSE; //东南到西北 break; case EnumMousePointPosition.MouseSizeTopLeft: this.Cursor = Cursors.SizeNWSE; //东南到西北 break; case EnumMousePointPosition.MouseSizeTopRight: this.Cursor = Cursors.SizeNESW; //东北到南西 break; default: break; } } }
public static void MyMouseLeave(System.EventArgs e) { m_MousePointPosition = EnumMousePointPosition.MouseSizeNone; Cursor.Current = Cursors.Arrow; }
private void MyMouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { moveArgs = e; #region origin move Control lCtrl = (sender as Control); if (!(lCtrl is Button)) { return; } btntag = (ButtonTags)lCtrl.Tag; int rowindex = btntag.RowIndex; int colindex = btntag.ColIndex; int rowmax = btntag.RowMax; int colmax = btntag.ColMax; if (moveArgs.Button == MouseButtons.Left) { switch (m_MousePointPosition) { case EnumMousePointPosition.MouseSizeBottom: if (rowindex >= rowmax) { return; } if (lCtrl.Height + (moveArgs.Y - p1.Y) <= MinHeight) { return; } if (Buttons[rowindex + 1][colindex].Height - moveArgs.Y + p1.Y <= MinHeight) { return; } foreach (Button btn in Buttons[rowindex]) { btn.Height += (moveArgs.Y - p1.Y); btntag = (ButtonTags)btn.Tag; btntag.btnSize.Height = btn.Height; btn.Tag = btntag; } foreach (Button btn in Buttons[rowindex + 1]) { //btn.Top += (moveArgs.Y - p1.Y); btn.Height -= (moveArgs.Y - p1.Y); btntag = (ButtonTags)btn.Tag; btntag.btnLoc.Y = btn.Top; btntag.btnSize.Height = btn.Height; btn.Tag = btntag; } this.btnContainer[rowindex].Height += (moveArgs.Y - p1.Y); btnContainer[rowindex + 1].Top += (moveArgs.Y - p1.Y); btnContainer[rowindex + 1].Height -= (moveArgs.Y - p1.Y); btnContainer[rowindex + 1].Refresh(); btnContainer[rowindex].Refresh(); p1.X = moveArgs.X; p1.Y = moveArgs.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeRight: if (colindex >= colmax) { return; } if (Buttons[rowindex][colindex + 1].Width - moveArgs.X + p1.X <= MinWidth) { return; } if (lCtrl.Width + moveArgs.X - p1.X <= MinWidth) { return; } lCtrl.Width = lCtrl.Width + moveArgs.X - p1.X; btntag = (ButtonTags)lCtrl.Tag; btntag.btnSize.Width = lCtrl.Width; lCtrl.Tag = btntag; Buttons[rowindex][colindex + 1].Left += moveArgs.X - p1.X; Buttons[rowindex][colindex + 1].Width -= moveArgs.X - p1.X; btntag = (ButtonTags)Buttons[rowindex][colindex + 1].Tag; btntag.btnLoc.X = Buttons[rowindex][colindex + 1].Left; btntag.btnSize.Width = Buttons[rowindex][colindex + 1].Width; Buttons[rowindex][colindex + 1].Tag = btntag; p1.X = moveArgs.X; p1.Y = moveArgs.Y; //'记录光标拖动的当前点 lCtrl.Refresh(); Buttons[rowindex][colindex + 1].Refresh(); break; case EnumMousePointPosition.MouseSizeTop: if (rowindex <= 0) { return; } if (lCtrl.Height - (moveArgs.Y - p.Y) <= MinHeight) { return; } if (Buttons[rowindex - 1][colindex].Height + moveArgs.Y - p.Y <= MinHeight) { return; } foreach (Button btn in Buttons[rowindex - 1]) { btn.Height += (moveArgs.Y - p.Y); btntag = (ButtonTags)btn.Tag; btntag.btnSize.Height = btn.Height; btn.Tag = btntag; } foreach (Button btn in Buttons[rowindex]) { //btn.Top += (moveArgs.Y - p.Y); btn.Height -= (moveArgs.Y - p.Y); btntag = (ButtonTags)btn.Tag; btntag.btnLoc.Y = btn.Top; btntag.btnSize.Height = btn.Height; btn.Tag = btntag; } btnContainer[rowindex - 1].Height += (moveArgs.Y - p.Y); btnContainer[rowindex - 1].Refresh(); btnContainer[rowindex].Top += (moveArgs.Y - p.Y); btnContainer[rowindex].Height -= (moveArgs.Y - p.Y); btnContainer[rowindex].Refresh(); break; case EnumMousePointPosition.MouseSizeLeft: if (colindex <= 0) { return; } if (Buttons[rowindex][colindex - 1].Width + moveArgs.X - p1.X <= MinWidth) { return; } if (lCtrl.Width - (moveArgs.X - p.X) <= MinWidth) { return; } Buttons[rowindex][colindex - 1].Width += moveArgs.X - p1.X; btntag = (ButtonTags)Buttons[rowindex][colindex - 1].Tag; btntag.btnSize.Width = Buttons[rowindex][colindex - 1].Width; Buttons[rowindex][colindex - 1].Tag = btntag; Buttons[rowindex][colindex - 1].Refresh(); lCtrl.Left = lCtrl.Left + moveArgs.X - p.X; lCtrl.Width = lCtrl.Width - (moveArgs.X - p.X); btntag = (ButtonTags)lCtrl.Tag; btntag.btnLoc.X = lCtrl.Left; btntag.btnSize.Width = lCtrl.Width; lCtrl.Tag = btntag; lCtrl.Refresh(); break; default: break; } } else { m_MousePointPosition = MousePointPosition(lCtrl.Size, e); //'判断光标的位置状态 switch (m_MousePointPosition) //'改变光标 { case EnumMousePointPosition.MouseSizeNone: mainControl.Cursor = Cursors.Arrow; //'箭头 break; case EnumMousePointPosition.MouseDrag: mainControl.Cursor = Cursors.Arrow; //'四方向 break; case EnumMousePointPosition.MouseSizeBottom: if (rowindex < rowmax) { mainControl.Cursor = Cursors.SizeNS; //'南北 } break; case EnumMousePointPosition.MouseSizeTop: if (rowindex > 0) { mainControl.Cursor = Cursors.SizeNS; //'南北 } break; case EnumMousePointPosition.MouseSizeLeft: if (colindex > 0) { mainControl.Cursor = Cursors.SizeWE; //'东西 } break; case EnumMousePointPosition.MouseSizeRight: if (colindex < colmax) { mainControl.Cursor = Cursors.SizeWE; //'东西 } break; default: break; } } #endregion }
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; } } }
public void MyMouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { Control lCtrl = (sender as Control); if (e.Button == MouseButtons.Left) { switch (m_MousePointPosition) { case EnumMousePointPosition.MouseDrag: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Top = lCtrl.Top + e.Y - p.Y; break; case EnumMousePointPosition.MouseSizeBottom: lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeBottomRight: lCtrl.Width = lCtrl.Width + e.X - p1.X; lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeRight: lCtrl.Width = lCtrl.Width + e.X - p1.X; // lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTop: lCtrl.Top = lCtrl.Top + (e.Y - p.Y); lCtrl.Height = lCtrl.Height - (e.Y - p.Y); break; case EnumMousePointPosition.MouseSizeLeft: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Width = lCtrl.Width - (e.X - p.X); break; case EnumMousePointPosition.MouseSizeBottomLeft: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Width = lCtrl.Width - (e.X - p.X); lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTopRight: lCtrl.Top = lCtrl.Top + (e.Y - p.Y); lCtrl.Width = lCtrl.Width + (e.X - p1.X); lCtrl.Height = lCtrl.Height - (e.Y - p.Y); p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTopLeft: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Top = lCtrl.Top + (e.Y - p.Y); lCtrl.Width = lCtrl.Width - (e.X - p.X); lCtrl.Height = lCtrl.Height - (e.Y - p.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: form.Cursor = Cursors.Arrow; //'箭头 break; case EnumMousePointPosition.MouseDrag: form.Cursor = Cursors.SizeAll; //'四方向 break; case EnumMousePointPosition.MouseSizeBottom: form.Cursor = Cursors.SizeNS; //'南北 break; case EnumMousePointPosition.MouseSizeTop: form.Cursor = Cursors.SizeNS; //'南北 break; case EnumMousePointPosition.MouseSizeLeft: form.Cursor = Cursors.SizeWE; //'东西 break; case EnumMousePointPosition.MouseSizeRight: form.Cursor = Cursors.SizeWE; //'东西 break; case EnumMousePointPosition.MouseSizeBottomLeft: form.Cursor = Cursors.SizeNESW; //'东北到南西 break; case EnumMousePointPosition.MouseSizeBottomRight: form.Cursor = Cursors.SizeNWSE; //'东南到西北 break; case EnumMousePointPosition.MouseSizeTopLeft: form.Cursor = Cursors.SizeNWSE; //'东南到西北 break; case EnumMousePointPosition.MouseSizeTopRight: form.Cursor = Cursors.SizeNESW; //'东北到南西 break; default: break; } } }
private void MyMouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { Control lCtrl = (sender as Control); if (e.Button == MouseButtons.Left) { switch (m_MousePointPosition) { case EnumMousePointPosition.MouseDrag: lCtrl.Left = lCtrl.Left + e.X - DownPoint.X; break; case EnumMousePointPosition.MouseSizeRight: lCtrl.Width = lCtrl.Width + e.X - CurrPoint.X; CurrPoint.X = e.X; CurrPoint.Y = e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeLeft: lCtrl.Left = lCtrl.Left + e.X - DownPoint.X; lCtrl.Width = lCtrl.Width - (e.X - DownPoint.X); break; default: break; } if (lCtrl.Width < MinWidth) { lCtrl.Width = MinWidth; } if (lCtrl.Width > this.Width) { lCtrl.Width = this.Width; } } else { m_MousePointPosition = MousePointPosition(lCtrl.Size, e); //'判断光标的位置状态 switch (m_MousePointPosition) //'改变光标 { case EnumMousePointPosition.MouseSizeNone: this.Cursor = Cursors.Arrow; //'箭头 break; case EnumMousePointPosition.MouseDrag: this.Cursor = Cursors.SizeAll; //'四方向 break; case EnumMousePointPosition.MouseSizeLeft: this.Cursor = Cursors.SizeWE; //'东西 break; case EnumMousePointPosition.MouseSizeRight: this.Cursor = Cursors.SizeWE; //'东西 break; default: break; } } }
private void panelEx1_MouseMove(object sender, MouseEventArgs e) { if (dragingborder) { if (e.Button != MouseButtons.Left) { dragingborder = false; } } else { Point p = Cursor.Position; p = new Point(p.X - this.Location.X, p.Y - this.Location.Y); if (p.X < 15) { if (p.Y < 10) { panelEx1.Cursor = System.Windows.Forms.Cursors.SizeNWSE; cursor = EnumMousePointPosition.MouseSizeTopLeft; } else if (p.Y + 10 > this.Height) { panelEx1.Cursor = System.Windows.Forms.Cursors.SizeNESW; cursor = EnumMousePointPosition.MouseSizeBottomLeft; } else { panelEx1.Cursor = System.Windows.Forms.Cursors.SizeWE; cursor = EnumMousePointPosition.MouseSizeLeft; } } else if (p.X + 15 > this.Width) { if (p.Y < 10) { panelEx1.Cursor = System.Windows.Forms.Cursors.SizeNESW; cursor = EnumMousePointPosition.MouseSizeTopRight; } else if (p.Y + 10 > this.Height) { panelEx1.Cursor = System.Windows.Forms.Cursors.SizeNWSE; cursor = EnumMousePointPosition.MouseSizeBottomRight; } else { panelEx1.Cursor = System.Windows.Forms.Cursors.SizeWE; cursor = EnumMousePointPosition.MouseSizeRight; } } else { if (p.Y < 10) { panelEx1.Cursor = System.Windows.Forms.Cursors.SizeNS; cursor = EnumMousePointPosition.MouseSizeTop; } else if (p.Y + 10 > this.Height) { panelEx1.Cursor = System.Windows.Forms.Cursors.SizeNS; cursor = EnumMousePointPosition.MouseSizeBottom; } else { panelEx1.Cursor = System.Windows.Forms.Cursors.Default; cursor = EnumMousePointPosition.MouseSizeNone; } } } }
private void control_MouseLeave(object sender, EventArgs e) { this.m_MousePointPosition = EnumMousePointPosition.MouseSizeNone; Cursor.Current = Cursors.Arrow; }
private void MyMouseLeave(object sender, EventArgs e) { m_MousePointPosition = EnumMousePointPosition.MouseSizeNone; control.Cursor = Cursors.Arrow; }
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; } } }
private void MyMouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { Control lCtrl = (sender as Control); if (e.Button == MouseButtons.Left) { switch (m_MousePointPosition) { case EnumMousePointPosition.MouseDrag: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Top = lCtrl.Top + e.Y - p.Y; break; case EnumMousePointPosition.MouseSizeBottom: lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeBottomRight: lCtrl.Width = lCtrl.Width + e.X - p1.X; lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeRight: lCtrl.Width = lCtrl.Width + e.X - p1.X; // lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTop: lCtrl.Top = lCtrl.Top + (e.Y - p.Y); lCtrl.Height = lCtrl.Height - (e.Y - p.Y); break; case EnumMousePointPosition.MouseSizeLeft: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Width = lCtrl.Width - (e.X - p.X); break; case EnumMousePointPosition.MouseSizeBottomLeft: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Width = lCtrl.Width - (e.X - p.X); lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTopRight: lCtrl.Top = lCtrl.Top + (e.Y - p.Y); lCtrl.Width = lCtrl.Width + (e.X - p1.X); lCtrl.Height = lCtrl.Height - (e.Y - p.Y); p1.X = e.X; p1.Y = e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTopLeft: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Top = lCtrl.Top + (e.Y - p.Y); lCtrl.Width = lCtrl.Width - (e.X - p.X); lCtrl.Height = lCtrl.Height - (e.Y - p.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: this.Cursor = Cursors.Arrow; //'箭头 break; case EnumMousePointPosition.MouseDrag: this.Cursor = Cursors.SizeAll; //'四方向 break; case EnumMousePointPosition.MouseSizeBottom: this.Cursor = Cursors.SizeNS; //'南北 break; case EnumMousePointPosition.MouseSizeTop: this.Cursor = Cursors.SizeNS; //'南北 break; case EnumMousePointPosition.MouseSizeLeft: this.Cursor = Cursors.SizeWE; //'东西 break; case EnumMousePointPosition.MouseSizeRight: this.Cursor = Cursors.SizeWE; //'东西 break; case EnumMousePointPosition.MouseSizeBottomLeft: this.Cursor = Cursors.SizeNESW; //'东北到南西 break; case EnumMousePointPosition.MouseSizeBottomRight: this.Cursor = Cursors.SizeNWSE; //'东南到西北 break; case EnumMousePointPosition.MouseSizeTopLeft: this.Cursor = Cursors.SizeNWSE; //'东南到西北 break; case EnumMousePointPosition.MouseSizeTopRight: this.Cursor = Cursors.SizeNESW; //'东北到南西 break; default: break; } } }
private void pictureBox2_MouseLeave(object sender, EventArgs e) { m_MousePointPosition = EnumMousePointPosition.MouseSizeNone; this.Cursor = Cursors.Arrow; }
//鼠标移过控件的事件 private void MyMouseMove(object sender, MouseEventArgs e) { Control lCtrl = (sender as Control);//获得事件源 //左键按下移动 if (e.Button == MouseButtons.Left) { switch (m_MousePointPosition) { case EnumMousePointPosition.MouseDrag: lCtrl.Left = lCtrl.Left + e.X - m_lastPoint.X; lCtrl.Top = lCtrl.Top + e.Y - m_lastPoint.Y; break; case EnumMousePointPosition.MouseSizeBottom: lCtrl.Height = lCtrl.Height + e.Y - m_endPoint.Y; m_endPoint.X = e.X; m_endPoint.Y = e.Y; //记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeBottomRight: lCtrl.Width = lCtrl.Width + e.X - m_endPoint.X; lCtrl.Height = lCtrl.Height + e.Y - m_endPoint.Y; m_endPoint.X = e.X; m_endPoint.Y = e.Y; //记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeRight: lCtrl.Width = lCtrl.Width + e.X - m_endPoint.X; //lCtrl.Height = lCtrl.Height + e.Y - m_endPoint.Y; m_endPoint.X = e.X; m_endPoint.Y = e.Y; //记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTop: lCtrl.Top = lCtrl.Top + (e.Y - m_lastPoint.Y); lCtrl.Height = lCtrl.Height - (e.Y - m_lastPoint.Y); break; case EnumMousePointPosition.MouseSizeLeft: lCtrl.Left = lCtrl.Left + e.X - m_lastPoint.X; lCtrl.Width = lCtrl.Width - (e.X - m_lastPoint.X); break; case EnumMousePointPosition.MouseSizeBottomLeft: lCtrl.Left = lCtrl.Left + e.X - m_lastPoint.X; lCtrl.Width = lCtrl.Width - (e.X - m_lastPoint.X); lCtrl.Height = lCtrl.Height + e.Y - m_endPoint.Y; m_endPoint.X = e.X; m_endPoint.Y = e.Y; //记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTopRight: lCtrl.Top = lCtrl.Top + (e.Y - m_lastPoint.Y); lCtrl.Width = lCtrl.Width + (e.X - m_endPoint.X); lCtrl.Height = lCtrl.Height - (e.Y - m_lastPoint.Y); m_endPoint.X = e.X; m_endPoint.Y = e.Y; //记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTopLeft: lCtrl.Left = lCtrl.Left + e.X - m_lastPoint.X; lCtrl.Top = lCtrl.Top + (e.Y - m_lastPoint.Y); lCtrl.Width = lCtrl.Width - (e.X - m_lastPoint.X); lCtrl.Height = lCtrl.Height - (e.Y - m_lastPoint.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: this.Cursor = Cursors.Arrow; //箭头 break; case EnumMousePointPosition.MouseDrag: this.Cursor = Cursors.SizeAll; //四方向 break; case EnumMousePointPosition.MouseSizeBottom: this.Cursor = Cursors.SizeNS; //南北 break; case EnumMousePointPosition.MouseSizeTop: this.Cursor = Cursors.SizeNS; //南北 break; case EnumMousePointPosition.MouseSizeLeft: this.Cursor = Cursors.SizeWE; //东西 break; case EnumMousePointPosition.MouseSizeRight: this.Cursor = Cursors.SizeWE; //东西 break; case EnumMousePointPosition.MouseSizeBottomLeft: this.Cursor = Cursors.SizeNESW; //东北到南西 break; case EnumMousePointPosition.MouseSizeBottomRight: this.Cursor = Cursors.SizeNWSE; //东南到西北 break; case EnumMousePointPosition.MouseSizeTopLeft: this.Cursor = Cursors.SizeNWSE; //东南到西北 break; case EnumMousePointPosition.MouseSizeTopRight: this.Cursor = Cursors.SizeNESW; //东北到南西 break; default: break; } } }
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; } } }