前言:
成都创新互联自2013年起,是专业互联网技术服务公司,拥有项目网站制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元多伦做网站,已为上家服务,为多伦各地企业和个人服务,联系电话:18980820575很多时候我们需要在运行时,动态地改变控件的位置以及大小,以获得更好的布局。比如说实际项目中的可自定义的报表、可自定义的单据等诸如此类。它们有个特点就是允许客户或者二次开发人员设计它们需要的界面设置功能。
本人以前也做过可自定义系统,包括界面和功能,主要为了减少开发人员的工作量以及程序的灵活性和健壮性。
本篇主要讨论下,在运行时如何实现拖拉控件,达到改变控件位置与大小。功能将模拟VS设计界面时的拖拉功能。
(本篇暂不涉及多控件同时操作)
一、技术概述
其实实现运行时控件的拖拉并不难,主要是改变控件的Location与Size即可。动态调整时再捕获MouseDown、MouseMove及MouseUp事件来实时修改上述两个属性就可以实现。
二、功能规划
在此之前,我们先来看下.net设计界面,一旦选中某个控件时,将会出现如下图的边框:
之后就可以通过拖拉出现的边框改变其大小。而改变控件的位置,实际上是当鼠标点击在控件内部拖动时实现的。
所有本例也将功能分为两个部分实现,分别为控件内部拖动改变位置与控件边框拖拉改变大小。
三、具体实现
1.拖动控件改变位置
首先,新建一个项目,然后添加一个类,取名叫MoveControl,该类用来给控件挂载事件实现拖动。
接着在该类中添加字段currentControl,用来保存需要操作的控件,即通过构造函数传递的控件。
接着创建一方法--AddEvents,用来给当前的控件挂载事件。
代码如下:
DragControl
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Drawing; namespace DragControl { public class MoveControl { #region Constructors public MoveControl(Control ctrl) { currentControl = ctrl; AddEvents(); } #endregion #region Fields private Control currentControl; //传入的控件 #endregion #region Properties #endregion #region Methods ////// 挂载事件 /// private void AddEvents() { currentControl.MouseClick += new MouseEventHandler(MouseClick); currentControl.MouseDown += new MouseEventHandler(MouseDown); currentControl.MouseMove += new MouseEventHandler(MouseMove); currentControl.MouseUp += new MouseEventHandler(MouseUp); } #endregion #region Events ////// 鼠标单击事件:用来显示边框 /// /// /// void MouseClick(object sender, MouseEventArgs e) { } ////// 鼠标按下事件:记录当前鼠标相对窗体的坐标 /// void MouseDown(object sender, MouseEventArgs e) { } ////// 鼠标移动事件:让控件跟着鼠标移动 /// void MouseMove(object sender, MouseEventArgs e) { } ////// 鼠标弹起事件:让自定义的边框出现 /// void MouseUp(object sender, MouseEventArgs e) { } #endregion } }
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文名称:C#实现拖拉控件改变位置与大小的方法-创新互联
网页网址:http://lswzjz.com/article/hshhe.html