六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 27|回复: 0

C#基础系列:开发自己的窗体设计器(实现控件的选择)

[复制链接]

升级  32.45%

533

主题

533

主题

533

主题

探花

Rank: 6Rank: 6

积分
1649
 楼主| 发表于 2013-1-26 12:39:48 | 显示全部楼层 |阅读模式
所谓控件的选择,就是在设计器上某个控件被选中或者控件获得焦点(通过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;}
  • }
  • }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表