有很多的朋友搞不清楚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。
那我們又如何來開發一個Component呢?其實很簡單,只要我們把一個類從System.ComponentModel.Component(下面簡寫Component)繼承下來即可。
下面我們就來編寫一個簡單的Component,開啟vs 2005添加一個新的ClassLibrary工程,名稱為Components,更改Class1的代碼如下:
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; }
}
}
}
編譯完成後,其Property的效果如下:
請注意Id是灰色,不能對其進行設值,而CreateDateTime在Property視窗中沒有顯示。