c# 程序运行后,任意拖动窗体上的控件[转载]
2011-05-30 17:35
453 查看
1.先建一类ControlMoveResize.cs
2.使用方法
using System; using System.Collections.Generic; using System.Text; using System.Drawing; using System.Windows.Forms; namespace yaohao { class ControlMoveResize { bool IsMoving = false; Point pCtrlLastCoordinate = new Point(0, 0); Point pCursorOffset = new Point(0, 0); Point pCursorLastCoordinate = new Point(0, 0); private Control ctrl = null; private ScrollableControl Containe = null; private void MouseDown(object sender, MouseEventArgs e) { if (Containe == null) { return; } if (e.Button == MouseButtons.Left) { IsMoving = true; pCtrlLastCoordinate.X = ctrl.Left; pCtrlLastCoordinate.Y = ctrl.Top; pCursorLastCoordinate.X = Cursor.Position.X; pCursorLastCoordinate.Y = Cursor.Position.Y; } } private void MouseMove(object sender, MouseEventArgs e) { if (Containe == null) { return; } if (e.Button == MouseButtons.Left) { if (this.IsMoving) { Point pCursor = new Point(Cursor.Position.X, Cursor.Position.Y); pCursorOffset.X = pCursor.X - pCursorLastCoordinate.X; pCursorOffset.Y = pCursor.Y - pCursorLastCoordinate.Y; ctrl.Left = pCtrlLastCoordinate.X + pCursorOffset.X; ctrl.Top = pCtrlLastCoordinate.Y + pCursorOffset.Y; } } } private void MouseUp(object sender, MouseEventArgs e) { if (Containe == null) { return; } if (this.IsMoving) { if (pCursorOffset.X == 0 && pCursorOffset.Y == 0) { return; } if ((pCtrlLastCoordinate.X + pCursorOffset.X + ctrl.Width) > 0) { ctrl.Left = pCtrlLastCoordinate.X + pCursorOffset.X; } else { ctrl.Left = 0; } if ((pCtrlLastCoordinate.Y + pCursorOffset.Y + ctrl.Height) > 0) { ctrl.Top = pCtrlLastCoordinate.Y + pCursorOffset.Y; } else { ctrl.Top = 0; } pCursorOffset.X = 0; pCursorOffset.Y = 0; } } public ControlMoveResize(Control c, ScrollableControl parentContain) { ctrl = c; this.Containe = parentContain; ctrl.MouseDown += new MouseEventHandler(MouseDown); ctrl.MouseMove += new MouseEventHandler(MouseMove); ctrl.MouseUp += new MouseEventHandler(MouseUp); } } }
2.使用方法
private void Form1_Load(object sender, EventArgs e) { ControlMoveResize con = new ControlMoveResize(button1, this); }
相关文章推荐
- C#实现窗体拖动、不允许窗体拖动、任意控件运行时拖动
- 关于拖动(实现窗体拖动、不允许窗体拖动、任意控件运行时拖动)
- C#实现窗体和任意控件的拖动
- C#创建可以随意拖动的控件,拖动窗体上的任意控件到指定位置
- C#窗体程序在win7下运行时 控件无win7 方式
- C#基础系列:开发自己的窗体设计器(在容器上拖动鼠标增加控件)
- [转]C#鼠标拖动任意控件
- C# 调用带参数的控制台程序 并将命令行输出的内容实时输出至窗体中的显示控件
- C#将exe运行程序嵌入到自己的winform窗体中
- VS2013 C#WinForm程序构造界面拖动控件NumericUpDown时"未响应“是有道词典惹的祸
- c# 鼠标点击控件即拖动窗体
- 转载:编写C#程序让其在Win7 下以管理员权限运行
- 在运行时通过鼠标拖动移动控件位置(c#)
- [置顶] C#实现窗体拖动时各个控件同比自动放缩大小
- [转载内容]C# win程序中主窗体菜单的权限控制
- C#窗体内嵌外部程序(cmd.exe)的显示(转载)
- c#可以创建任意控件的拖动
- C#中如何防止一个程序运行多个副本(转载)
- [转载]c# winform 获取当前程序运行根目录
- C# WinForm实现窗体上控件自由拖动功能示例