CLR自定义.NET控件制作(2)——添加自定义属性、方法和事件

第一节我讲了简单的自定义控件的生成,一个控件具备三项最基本的特性:属性、方法、事件。下面我就介绍如何给自定义控件添加自定义的属性、方法、事件。

MyViewControl控件实际上是一个托管的类,他继承了System::Windows::Forms::UserControl,我们只需在MyViewControl.h中的MyViewControl类中添加相应的代码就OK了。

自定义属性:

public:

              [Description("获取控件视图句柄")]

              [BrowsableAttribute(false)]

              property IntPtr ViewHandle

              {

                   IntPtr get();

                   Void set(IntPtr value);

              }

关键字property代表自定义属性,IntPtr返回值,ViewHandle就是属性。其他的是描述信息,一一列举:

BrowsableAttribute:描述是否一个属性或事件应该被显示在属性浏览器里。

CategoryAttribute:描述一个属性或事件的类别,当使用类别的时候,属性浏览器按类别将属性分组。
DescriptionAttribute:当用户在属性浏览器里选择属性的时候,description里指定的文本会显示在属性浏览器的下边,向用户显示属性的功能。
BindableAttribute:描述是否一个属性倾向于被绑定。
DefaultPropertyAttribute:为组件指定一个默认的属性,当用户在Form设计器上选择一个控件的时候,默认属性会在属性浏览器里被选中。   

DefaultValueAttribute:为一个简单类型的属性设置一个默认值。

EditorAttribute:为属性指定一个特殊的编辑器。
LocalizableAttribute:指示一个属性是否能被本地化,任何有这个Attribute的属性将会被持久化到资源文件里。   
DesignerSerializationVisibilityAttribute:指示一个属性是否或者如何持久化到代码里。
TypeConverterAttribute:为属性指定一个类型转换器,类型转换器能将属性的值转化成其它的数据类型。
DefaultEventAttribute:为组件指定一个默认的事件,当用户在form设计其中选择一个控件的时候,在属性浏览器中这个事件被选中。

这些设计时的Attribute时很重要的,如果使用的好,将会对用户的使用带来很大的便利。

自定义方法:

自定义方法跟c++普通类中的方法一样,只要我们在MyViewControl类中添加方法就OK了,

              void Test(){};

若要重写自带的方法,则加virtual及override关键字,如我要重写Refresh()函数,则如下:

virtual void  Refresh() override {};

自定义事件:

自定义事件用关键字delegate,先定义委托,再写事件触发的函数。

         public:

              delegate void MyTestEventHandle(System::Object^ sender, EventArgs^ e);

              [Description("自定义事件")]

              event MyTestEventHandle^ MyTest;

              void OnMyTest (EventArgs^ e)

              {

                   MyTest (this, e);

              }

若要触发此事件,必需在相应的地方响应MyTest (EventArgs^ e)函数,并定义一个EventArgs,如此事件的触发:

EventArgs^  MyArgs = gcnew EventArgs();

MyTest (MyArgs);

这样就触发了此事件,若要传递自己的参数,则要自己定义一个继承自EventArgs的类,这个以后会提到。

注意:若要在属性浏览器中看到自定义事件,则必须定义为public,前面的方法也是这样。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值