教你做MSN样式的控件
来源:互联网 发布:西南交大网络设置 编辑:程序博客网 时间:2024/04/30 13:00
我想尝试一下写文章的,就写下了这篇文章希望能够给C#的初学者给与一点提示。上午做了一个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属性就可以了。好了一个接近完善的控件就做出来的,使用是那末的方便,只要把它加入工具箱就可以了,不需要每次都写一些复杂的代码,做控件是不时很容易哦 ,
需要的的向我要了 QQ:59294081
- 教你做MSN样式的控件
- 教你做MSN样式的控件
- 教你做任意形状的控件
- MSN样式的消息提示
- 装饰你的MSN
- 自己做的一个类似MSN弹出消息的框框的自定义控件
- 教你如何做控件*.ocx
- Android自定义EditText:手把手教你做一款含一键删除&自定义样式的SuperEditText
- MSN、QQ的消息提示样式
- Android自定义控件——手把手教你写出Google样式的ProgressBar
- [成人]爆强MSN签名让你的MSN与众不同
- 用MSN Cartoon做的卡通自画像
- 教你做一个可以弹出确认对话框的自定义Web服务器控件ConfirmButton
- 你的msn移动了吗?
- [休闲] 让你的MSN发疯
- 如何防止别人监听你的MSN?
- 教你如何知道MSN的好友是否删除了你
- 教你如何知道MSN的好友是否阻止了你
- Hibernate 入门
- 回心转意 爱人
- JDBC常见问题 -来自sun论坛
- 前面是曙光了
- C#(文字类型转换)【下拉菜单->C#字体CodeBehind】附:【用C#实现生成PDF文档】
- 教你做MSN样式的控件
- EDK Driver Library : xilnet
- java常见问题
- TREE VIEW
- 快速清除TreeView的内容
- Hibernate2.1.6 源码分析
- treeview使用问题集锦
- C的几道练习及心得
- java中 中文问题详解