CLR自定义.NET控件制作(2)——添加自定义属性、方法和事件
2011-07-14 22:43
801 查看
第一节我讲了简单的自定义控件的生成,一个控件具备三项最基本的特性:属性、方法、事件。下面我就介绍如何给自定义控件添加自定义的属性、方法、事件。
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,前面的方法也是这样。
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,前面的方法也是这样。
相关文章推荐
- CLR自定义.NET控件制作(2)——添加自定义属性、方法和事件
- 织梦 DeDeCMS 添加自定义属性的方法(图文教程)
- 织梦 DeDeCMS 添加自定义属性的方法
- 为Flex自定义组件添加属性和事件
- flex4.5 DataGrid 列中添加Button,事件函数中获取外部的方法、属性。
- 如何使用VC++ 2005 给ActiveX控件添加方法,属性,事件
- CLR自定义.NET控件制作(4)——鼠标消息的响应
- DHTMLX Tree JSON添加自定义属性方法
- CLR自定义.NET控件制作(4)——鼠标消息的响应
- C#如何创建自定义控件以及添加自定义属性和事件使用
- 如何给vb的UserControl添加属性、方法和事件?
- Android 两种为自定义组件添加属性的使用方法和区别
- 如何在ASP.NET中制作Web用户自定义控件,并在aspx页面中使用它的方法和属性?
- 说说Android 两种为自定义组件添加属性的使用方法和区别
- (一)CLR自定义.NET控件制作——制作简单的自定义控件
- 说说Android 两种为自定义组件添加属性的使用方法和区别
- ASP.NET 用户控件自定义属性、方法、事件
- 黄聪:DEDECMS织梦系统共如何添加自定义属性和修改方法
- vb.net中用户自定义控件中属性、方法、事件的理解
- ASP.NET 用户控件自定义属性、方法、事件