文档详情

C窗体设计器的使用.doc

发布:2017-06-02约字共4页下载文档
文本预览下载声明
C#窗体设计器开发实例详解 ?2009-09-07 06:18 ?RonoTian ?CSDN博客 ?我要评论 0 C#窗体设计器的开发实例这里主要向你介绍实现控件移动的功能,希望对通过介绍使你对了解和学习C#窗体设计器的开发有所帮助。 C#窗体设计器开发实例主要向你介绍控件移动,关键点就是需要设计一个独立于任何控件的类(UIMoveKnob)来控制控件的移动。我这里实现的方法只针对一个控件,如果需要同时选择多个控件,然后同时移动的话,你需要修改这个类,这里是有点难于控制,我使用的方法严重耦合,所以只在这里给出移动一个控件的办法,具体移动过个控件的方法请各位讨论。 C#窗体设计器开发目的: 要移动某个选定的控件,实现控件的:MouseDown;MouseMove;MouseUp这3个事件。 在MouseDown的时候,记录鼠标点击的开始位置,并设置开始移动标志为True; 在MouseMove的时候,把控件移动相应的距离(当前鼠标位置 – 鼠标点击的开始位置); 在MouseUp的时候,释放移动标志为false。 有了控件移动控制类 UIMoveKnob 以后,我们怎么实现UIMoveKnob和具体控件的关联呢?同样,我们需要在Form中增加一个变量private Hashtable _HashUIMoveKnob用于缓存每个控件对应的UIMoveKnob对象。 同时在Form.ControlAdded事件中,通过this._HashUIMoveKnob.Add e.Control, new UIMoveKnob e.Control ;设置其关联性。 C#窗体设计器开发之UIMoveKnob的代码如下: public?class?UIMoveKnob private?System.Windows.Forms.Control?_Owner; private?int?_MouseClickAtX; private?int?_MouseClickAtY; private?bool?_BeginDrag; ? public?UIMoveKnob System.Windows.Forms.Control?Owner this._Owner? ?Owner; ? this._Owner.MouseDown?+ new?System.Windows.Forms. ? MouseEventHandler this.Owner_MouseDown ; this._Owner.MouseMove?+ new?System.Windows.Forms. ? MouseEventHandler this.Owner_MouseMove ; this._Owner.MouseUp?+ new?System.Windows.Forms. ? MouseEventHandler this.Owner_MouseUp ; void?Owner_MouseDown object?sender, System.Windows.Forms.MouseEventArgs?e this._Owner.Cursor System.Windows.Forms.Cursors.Default; ? this._MouseClickAtX? ?e.X; this._MouseClickAtY? ?e.Y; this._BeginDrag? ?true; void?Owner_MouseMove object?sender, System.Windows.Forms.MouseEventArgs?e try if? this._BeginDrag Rectangle?rect; ? /* *?对于下列控件,是不能拖动的,所以这里也不绘制拖动边框 *?TabPage, */ if? this._Owner?is?System.Windows.Forms.TabPage // else this._Owner.Location new?Point this._Owner.Left?+ e.X?-?this._MouseClickAtX, this._Owner.Top?+?e.Y?-?this._MouseClickAtY ; catch void?Owner_MouseUp object?sender, System.Windows.Forms.MouseEventArgs?e this._BeginDrag? ?false; this._Owner.Parent.Refresh ; 修改后的Form代码前半部分如下: private?MouseHook?_MouseHook; //我们将所有的已经与具体控件关联了的UISizeKnob缓存在这个HashTable中 pr
显示全部
相似文档