下载本文示例代码
前一章,我们创建了最简单的组件,今天讲讲Component的PropertyAttribute和EventAttribute。 EventAttribute有: BrowsableAttribute 、CategoryAttribute、DescriptionAttribute、DefaultEventAttribute PropertyAttribute有: BrowsableAttribute 、CategoryAttribute、DescriptionAttribute、DefaultPropertyAttribute、DefaultValueAttribute、EditorAttribute、DesignerSerializationVisibilityAttribute、TypeConverterAttribute、BindableAttribute、LocalizableAttribute 在本章教程中我们主要讲以上红色的Attribute,再下章的Designer UI会讲蓝色的Attribute,紫色的Attribute不作讲解。 上述的Attribute简明阐述如下: BrowsableAttribute:在Property窗口中是否可见。 CategoryAttribute:Property或者Event所属的哪个组。 DescriptionAttribute:Property或者Event的简单描述。 DefaultEventAttribute:默认Event。 DefaultPropertyAttribute:默认Property,选中组件,其Property窗口中默认选中在这个Property上。 DefaultValueAttribute:Property的默认值,选中组件,其Event窗口中默认选中在这个Event上。
using System;using System.Collections.Generic;using System.Text;using System.ComponentModel;namespace Components{ // PropertyAttribute、EventAttribute分别放在Property、Event上,并[]括起来。 // DefaultPropertyAttribute、DefaultEventAttribute必须放在类头上。 [DefaultEvent("CustomerLogout")] public class Customer : Component { private string _id; private string _sex; private int _age; private string _address; private DateTime _createTime; // 没有CategoryAttribute、DescriptionAttribute。 public string Id { get { return _id; } set { _id = value; } } // 此属性在Customer's Details分组中,CategoryAttribute、DescriptionAttribute也适用于Event。 [Category("Customer's Details"), Description("Customer's Sex")] // 可以在一个[]里写两个Attribute。 public string Sex { get { return _sex; } set { _sex = value; } } [Category("Customer's Details")] [Description("Customer's Age"), DefaultValue(20)] public int Age { get { return _age; } set { _age = value; } } [DefaultValue("shanghai"),Category("Customer's Details")] public string Address { get { return _address; } set { _address = value; } } [Browsable(false)] // 此Property在Property窗口中不可见,BrowsableAttribute也适用于Event。 public DateTime CreateTime { get { return _createTime; } set { _createTime = value; } } public sealed class CustomerLoginEventArgs : EventArgs { } public sealed class CustomerLogoutEventArgs : EventArgs { } public delegate void CustomerLoginEventHandler(object sender, CustomerLoginEventArgs e); public delegate void CustomerLogoutEventHandler(object sender, CustomerLogoutEventArgs e); public event CustomerLoginEventHandler CustomerLogin { add { } remove { } } public event CustomerLogoutEventHandler CustomerLogout { add { } remove { } } }} 其Property、Event窗口如下:
我原来没有用过DefaultValueAttribute,上面代码中的Address、Age在Customer1创建时没有得到DefaultValue,我会找出原因,并在下章补上,也希望知道的朋友能告之。
前一章,我们创建了最简单的组件,今天讲讲Component的PropertyAttribute和EventAttribute。 EventAttribute有: BrowsableAttribute 、CategoryAttribute、DescriptionAttribute、DefaultEventAttribute PropertyAttribute有: BrowsableAttribute 、CategoryAttribute、DescriptionAttribute、DefaultPropertyAttribute、DefaultValueAttribute、EditorAttribute、DesignerSerializationVisibilityAttribute、TypeConverterAttribute、BindableAttribute、LocalizableAttribute 在本章教程中我们主要讲以上红色的Attribute,再下章的Designer UI会讲蓝色的Attribute,紫色的Attribute不作讲解。 上述的Attribute简明阐述如下: BrowsableAttribute:在Property窗口中是否可见。 CategoryAttribute:Property或者Event所属的哪个组。 DescriptionAttribute:Property或者Event的简单描述。 DefaultEventAttribute:默认Event。 DefaultPropertyAttribute:默认Property,选中组件,其Property窗口中默认选中在这个Property上。 DefaultValueAttribute:Property的默认值,选中组件,其Event窗口中默认选中在这个Event上。
using System;using System.Collections.Generic;using System.Text;using System.ComponentModel;namespace Components{ // PropertyAttribute、EventAttribute分别放在Property、Event上,并[]括起来。 // DefaultPropertyAttribute、DefaultEventAttribute必须放在类头上。 [DefaultEvent("CustomerLogout")] public class Customer : Component { private string _id; private string _sex; private int _age; private string _address; private DateTime _createTime; // 没有CategoryAttribute、DescriptionAttribute。 public string Id { get { return _id; } set { _id = value; } } // 此属性在Customer's Details分组中,CategoryAttribute、DescriptionAttribute也适用于Event。 [Category("Customer's Details"), Description("Customer's Sex")] // 可以在一个[]里写两个Attribute。 public string Sex { get { return _sex; } set { _sex = value; } } [Category("Customer's Details")] [Description("Customer's Age"), DefaultValue(20)] public int Age { get { return _age; } set { _age = value; } } [DefaultValue("shanghai"),Category("Customer's Details")] public string Address { get { return _address; } set { _address = value; } } [Browsable(false)] // 此Property在Property窗口中不可见,BrowsableAttribute也适用于Event。 public DateTime CreateTime { get { return _createTime; } set { _createTime = value; } } public sealed class CustomerLoginEventArgs : EventArgs { } public sealed class CustomerLogoutEventArgs : EventArgs { } public delegate void CustomerLoginEventHandler(object sender, CustomerLoginEventArgs e); public delegate void CustomerLogoutEventHandler(object sender, CustomerLogoutEventArgs e); public event CustomerLoginEventHandler CustomerLogin { add { } remove { } } public event CustomerLogoutEventHandler CustomerLogout { add { } remove { } } }} 其Property、Event窗口如下:
我原来没有用过DefaultValueAttribute,上面代码中的Address、Age在Customer1创建时没有得到DefaultValue,我会找出原因,并在下章补上,也希望知道的朋友能告之。
下载本文示例代码
深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性深入浅出组件编程之固有属性和事件属性
阅读(136) | 评论(0) | 转发(0) |