教你做MSN样式的控件

翻译|其它|编辑:郝浩|2005-02-05 10:25:00.000|阅读 1485 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


上午做了一个MSN样式的控件,我就以此为例教大家做控件。让大家感受一下 .net给我们带来的 方便。

Bars和PageCollection为俩个集合分别来控制 bar 和page ,下面我说说我写控件碰到的一些难点,第一个就是控件做好了,如何在自己以后的编程不写代码就能完成界面的设计,这个。net已经给我们准备好一套很好的机制,只要照着用就可以了,我参照了 微软的tabcontrol 写法,通过设置属性就可以添加选型卡,我的做法为[Category("Appearance")]
[Description("在这里添加选项卡了")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public PageCollection PagesItem
{
get
{
return this.pages;
}
}
[Category("Appearance")]
public Panel Bars
{
get
{
return this.myBars;
}
}
注意这条属性哦 [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)],具体什么意思还是你自己看看帮助了,
第二个难点就是如何控制控件在设计时候的状态就是说什么时候把消息教给控件处理,什么时候把消息交给设计器来处理,在这一点我做的不是很成功,我是把消息都交给控件处理,虽然试图精确的控制但是还是没有能控制的住,
protected override void WndProc(ref System.Windows.Forms.Message m)
{
this.DefWndProc(ref m); //把消息全交给了控件,缺点就是设计器都不能完成单击选中的功能了,但是你拖动还是可以的,
#region garbage
// switch(m.Msg)
// {
// case (int)Msgs.WM_MOUSEMOVE:
// this.DefWndProc(ref m);
// break;
// case (int)Msgs.WM_LBUTTONDOWN:
// if(this.Control != null)
// {
// int xPos = (short)((uint)m.LParam & 0x0000FFFFU);
// int yPos = (short)(((uint)m.LParam & 0xFFFF0000U) >> 16);
// Rectangle rect = new Rectangle(this.Control.Location,new Size(40,100));
// if(rect.Contains(xPos,yPos))
// {
// this.DefWndProc(ref m);
// }
// else
// {
// base.WndProc(ref m);
// }
// }
// break;
// default:
// base.WndProc(ref m);
// break;
// }
#endregion

,下面说说如何使用,如果你用过tabcontrol,用我的控件就很容易了,通过设置 pageitem 属性 ,和page的barimage属性就可以了。好了一个接近完善的控件就做出来的,使用是那末的方便,只要把它加入工具箱就可以了,不需要每次都写一些复杂的代码,做控件是不时很容易哦 ,
 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP