日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 运行时通过鼠标拖动改变控件的大小

發布時間:2023/12/18 C# 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 运行时通过鼠标拖动改变控件的大小 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源: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();}} }調用: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

?

轉載于:https://www.cnblogs.com/foreverstars/p/3205527.html

總結

以上是生活随笔為你收集整理的C# 运行时通过鼠标拖动改变控件的大小的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。