C#組件編程(1)

C#組件編程(1)

1.Component与Control之间的区别
 (1)Component在Run Time时不能呈现UI,而Control可以在Run Time时呈现UI(但是vs 2005里的asp.net中的SqlDataSource是Control,但是它不能呈现UI)。
 (2)Component是贴在容器Container上的,而Control则是贴在Windows Form或者Web Form上的。
 举例来说,SqlCommand是个Component,DataGrid则是一个Control。

2.Property与Attribute的區別
在中文中這兩個是沒有區別的,本文將從字面上給以區別:Property表示屬性,Attribute表示特性.

3.一个简单的Component
 using System;
 using System.Collections.Generic;
 using System.Text;
 using System.ComponentModel;
 
 namespace Components
  {
     public class Component1 : Component
      {
         private int _id;
         private string _name;
         private DateTime _createDateTime;
 
         // 在Property窗口中为灰色显示。
         public int Id
          {
              get { return _id; }
         }
 
         // 在Property窗口中可以设置值。
         public string name
          {
              get { return _name; }
              set { _name = value; }
         }
 
         // 在Property窗口中不可见。
         public DateTime CreateDateTime
          {
              set { _createDateTime = value; }
         }
     }
 }

4.各种Attribute
--1.Attribute列表
EventAttribute有:
   BrowsableAttribute 、CategoryAttribute、DescriptionAttribute、DefaultEventAttribute

PropertyAttribute有:
   BrowsableAttribute 、CategoryAttribute、DescriptionAttribute、DefaultPropertyAttribute、ReadOnlyAttribute、 DefaultValueAttribute、EditorAttribute
、DesignerSerializationVisibilityAttribute、TypeConverterAttribute、BindableAttribute、LocalizableAttribute

MethodAttribute有:
WebMethod

--2.Attribute用途:
  BrowsableAttribute:在Property窗口中是否可见。
  CategoryAttribute:Property或者Event所属的哪个组。
  DescriptionAttribute:Property或者Event的简单描述。
  ReadOnlyAttribute : Property在屬性視窗中不可改寫
  DefaultEventAttribute:默认Event、选中组件,其Event窗口中默认选中在这个Event上。
  DefaultPropertyAttribute:默认Property,选中组件,其Property窗口中默认选中在这个Property上。
  DefaultValueAttribute:Property的默认值
  EditorAttribute:指定Property Editor使用的编辑器。
  DesignerSerializationVisibilityAttribute:指定通过Property Editor得到的结果是否保存在代码中。
  LocalizableAttribute:用户要本地化某个窗体时,任何具有该特性的属性都将自动永久驻留到资源文件中。

--3.使用示例:

 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=20;
         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; }
         }
 
         //屬性默認值為20
         [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; }
         }

         // 此Property在Property窗口中不可见,BrowsableAttribute也适用于Event。
         [Browsable(false)]
         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 { }
         }
     }
 }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值