C# 运行时通过鼠标拖动改变控件的大小
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                C#  运行时通过鼠标拖动改变控件的大小
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                來源:http://blog.csdn.net/yanleigis/article/details/1819447?
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Windows.Forms; using System.Drawing;namespace WindowsApplication2{class ResizeAction{bool IsMoving = false;int ctrlLastWidth = 0;int ctrlLastHeight = 0;int ctrlWidth;int ctrlHeight;int ctrlLeft;int ctrlTop;int cursorL;int cursorT;int ctrlLastLeft;int ctrlLastTop;int Htap;int Wtap;bool ctrlIsResizing = false;System.Drawing.Rectangle ctrlRectangle = new System.Drawing.Rectangle();private Control ctrl;private Form frm;public ResizeAction(Control c, Form frm){ctrl = c;this.frm = frm;this.Htap = this.frm.Height - this.frm.ClientRectangle.Height;this.Wtap = this.frm.Width - this.frm.ClientRectangle.Width;ctrl.MouseDown += new MouseEventHandler(MouseDown);ctrl.MouseMove += new MouseEventHandler(MouseMove);ctrl.MouseUp += new MouseEventHandler(MouseUp);}public void MouseMove(object sender, MouseEventArgs e){if (frm == null)return;if (e.Button == MouseButtons.Left){if (this.IsMoving){if (ctrlLastLeft == 0)ctrlLastLeft = ctrlLeft;if (ctrlLastTop == 0)ctrlLastTop = ctrlTop;int locationX = (Cursor.Position.X - this.cursorL + this.frm.DesktopLocation.X + this.Wtap + this.ctrl.Location.X);int locationY = (Cursor.Position.Y - this.cursorT + this.frm.DesktopLocation.Y + this.Htap + this.ctrl.Location.Y);if (locationX < this.frm.DesktopLocation.X + this.Wtap)locationX = this.frm.DesktopLocation.X + this.Wtap;if (locationY < this.frm.DesktopLocation.Y + this.Htap)locationY = this.frm.DesktopLocation.Y + this.Htap;this.ctrlLeft = locationX;this.ctrlTop = locationY;ctrlRectangle.Location = new System.Drawing.Point(this.ctrlLastLeft, this.ctrlLastTop);ctrlRectangle.Size = new System.Drawing.Size(ctrlWidth, ctrlHeight);ControlPaint.DrawReversibleFrame(ctrlRectangle, Color.Empty, System.Windows.Forms.FrameStyle.Dashed);ctrlLastLeft = ctrlLeft;ctrlLastTop = ctrlTop;ctrlRectangle.Location = new System.Drawing.Point(ctrlLeft, ctrlTop);ctrlRectangle.Size = new System.Drawing.Size(ctrlWidth, ctrlHeight);ControlPaint.DrawReversibleFrame(ctrlRectangle, Color.Empty, System.Windows.Forms.FrameStyle.Dashed);return;}int sizeageX = (Cursor.Position.X - this.frm.DesktopLocation.X - this.Wtap - this.ctrl.Location.X);int sizeageY = (Cursor.Position.Y - this.frm.DesktopLocation.Y - this.Htap - this.ctrl.Location.Y);if (sizeageX < 2)sizeageX = 1;if (sizeageY < 2)sizeageY = 1;ctrlWidth = sizeageX;ctrlHeight = sizeageY;if (ctrlLastWidth == 0)ctrlLastWidth = ctrlWidth;if (ctrlLastHeight == 0)ctrlLastHeight = ctrlHeight;if (ctrlIsResizing){ctrlRectangle.Location = new System.Drawing.Point(this.frm.DesktopLocation.X + this.ctrl.Left + this.Wtap, this.frm.DesktopLocation.Y + this.Htap + this.ctrl.Top);ctrlRectangle.Size = new System.Drawing.Size(ctrlLastWidth, ctrlLastHeight);}ctrlIsResizing = true;ControlPaint.DrawReversibleFrame(ctrlRectangle, Color.Empty, System.Windows.Forms.FrameStyle.Dashed);ctrlLastWidth = ctrlWidth;ctrlLastHeight = ctrlHeight;ctrlRectangle.Location = new System.Drawing.Point(this.frm.DesktopLocation.X + this.Wtap + this.ctrl.Left, this.frm.DesktopLocation.Y + this.Htap + this.ctrl.Top);ctrlRectangle.Size = new System.Drawing.Size(ctrlWidth, ctrlHeight);ControlPaint.DrawReversibleFrame(ctrlRectangle, Color.Empty, System.Windows.Forms.FrameStyle.Dashed);}}public void MouseDown(object sender, MouseEventArgs e){if (frm == null)return;if (e.X < this.ctrl.Width - 10 || e.Y < this.ctrl.Height - 10){this.IsMoving = true;this.ctrlLeft = this.frm.DesktopLocation.X + this.Wtap + this.ctrl.Left;this.ctrlTop = this.frm.DesktopLocation.Y + this.Htap + this.ctrl.Top;this.cursorL = Cursor.Position.X;this.cursorT = Cursor.Position.Y;this.ctrlWidth = this.ctrl.Width;this.ctrlHeight = this.ctrl.Height;}ctrlRectangle.Location = new System.Drawing.Point(this.ctrlLeft, this.ctrlTop);ctrlRectangle.Size = new System.Drawing.Size(ctrlWidth, ctrlHeight);ControlPaint.DrawReversibleFrame(ctrlRectangle, Color.Empty, System.Windows.Forms.FrameStyle.Dashed);}public void MouseUp(object sender, MouseEventArgs e){if (frm == null)return;ctrlIsResizing = false;if (this.IsMoving){ctrlRectangle.Location = new System.Drawing.Point(this.ctrlLeft, this.ctrlTop);ctrlRectangle.Size = new System.Drawing.Size(ctrlWidth, ctrlHeight);ControlPaint.DrawReversibleFrame(ctrlRectangle, Color.Empty, System.Windows.Forms.FrameStyle.Dashed);this.ctrl.Left = this.ctrlLeft - this.frm.DesktopLocation.X - this.Wtap;this.ctrl.Top = this.ctrlTop - this.frm.DesktopLocation.Y - this.Htap;this.IsMoving = false;this.ctrl.Refresh();return;}ctrlRectangle.Location = new System.Drawing.Point(this.frm.DesktopLocation.X + this.Wtap + this.ctrl.Left, this.frm.DesktopLocation.Y + this.Htap + this.ctrl.Top);ctrlRectangle.Size = new System.Drawing.Size(ctrlWidth, ctrlHeight);ControlPaint.DrawReversibleFrame(ctrlRectangle, Color.Empty, System.Windows.Forms.FrameStyle.Dashed);this.ctrl.Width = ctrlWidth;this.ctrl.Height = ctrlHeight;this.ctrl.Refresh();}} }調(diào)用:private void Form1_Load(object sender, EventArgs e){//WindowsApplication2.ResizeAction rs = new WindowsApplication2.ResizeAction(this.label1,this);WindowsApplication2.ResizeAction rs = new WindowsApplication2.ResizeAction(this.button1, this); } 參考:http://www.cnblogs.com/DS-CzY/archive/2007/06/30/801377.aspx?
轉(zhuǎn)載于:https://www.cnblogs.com/foreverstars/p/3205527.html
總結(jié)
以上是生活随笔為你收集整理的C# 运行时通过鼠标拖动改变控件的大小的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 根本不值得一提的乒乓球国手王浩
 - 下一篇: WPF Bitmap转BitmapSou