|
所谓控件的选择,就是在设计器上某个控件被选中或者控件获得焦点(通过Tab调整控件焦点)的时候,在控件的四周显示出调整手柄。
如下图:

<span style="">如上,通过控件的调整手柄,我们可以调整控件的宽度和高度。而实现这个调整手柄的关键点其实得益于vs2005控件的灵活性。因为这8个正方形的调整手柄其实就是8个控件。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
所以我们本文的重点如下:
1、开发自定义的调整手柄控件,也就是这正方形控件;
2、组合这8个调整手柄控件,目标是使设计器上的控件与调整手柄完全解耦,调整手柄能够不做任何的修改就可以应用于所有的控件;
3、设计器上的控件与调整手柄的对应方法,也就是选择控件的时候,能够在控件周围显示调整手柄。
下面我们针对这3个重点,在前一篇《在容器上拖动鼠标增加控件》的基础上,实现控件的选择功能。
1、开发自定义的调整手柄控件:
这其实属于自定义控件开发的问题,你首先增加“用户控件”,把控件名命名为UISizeDot,把下面的代码直接拷贝进去就可以了,所以我不做过多的描述,这里直接把代码贴出来好了。
<span style=""><div class="highlighter">
- [ToolboxItem(false)]
- publicpartialclassUISizeDot:Control
- {
- privatebool_movable;
- privatePenpen=newPen(Color.Black);
- publicUISizeDot()
- {
- InitializeComponent();
- SetStyle(ControlStyles.UserPaint,true);
- SetStyle(ControlStyles.AllPaintingInWmPaint,true);
- SetStyle(ControlStyles.OptimizedDoubleBuffer,true);
- this.TabStop=false;
- this._movable=true;
- }
- ///<summary>
- ///UISizeDot的边框颜色
- ///</summary>
- publicColorBorderColor
- {
- get{returnpen.Color;}
- set
- {
- this.pen=newPen(value);
- this.Refresh();
- }
- }
- protectedoverridevoidOnPaint(PaintEventArgspe)
- {
- //TODO:在此处添加自定义绘制代码
- //this.BackColor=Color.White;
- pe.Graphics.DrawRectangle(pen,0,0,this.Width-1,this.Height-1);
- //调用基类OnPaint
- base.OnPaint(pe);
- }
- publicboolMovable
- {
- get{returnthis._movable;}
- set{this._movable=value;}
- }
- }
|
|