[ 元件(Component)、控制像(Control)、容器(Container)、站台(Site) ]
- 在 .NET Framework 中,元件是實作 System.ComponentModel.IComponent 介面的類別,或是從實作 IComponent 之類別直接或間接衍生的類別。
- 控制項是一種提供 (或啟用) 使用者介面 (UI) 能力的元件。 .NET Framework 為控制項提供了兩個基底類別:一個是用戶端 Windows Form 控制項 (System.Windows.Forms.Control),另一個是 ASP.NET 伺服器控制項(System.Web.UI.Control)。 .NET Framework 類別庫中的所有控制項都是從這兩個類別直接或間接衍生。
System.Windows.Forms.Control 是衍生自 Component 而且本身提供 UI 功能。 System.Web.UI.Control 會實作 IComponent,而且會提供很容易在上面加入 UI 功能的基礎結構。 - 容器是實作 System.ComponentModel.IContainer 介面的類別,或者從實作這個介面之類別衍生的類別。 容器在邏輯上可包含一個或多個被稱為容器子元件的元件。
- 站台是實作 System.ComponentModel.ISite 介面的類別,或者從實作這個介面之類別衍生的類別。 站台是由容器提供,用來管理其子元件並且與它們通訊。 通常,一個容器和一個站台會實作為一個單元。
- .NET Framework 中的元件有一個重要功能,那就是它們是可設計的,這表示身為元件的類別可用於快速應用程式開發 (RAD) 環境中,例如 Visual Studio。 您可以將元件加入至 Visual Studio 的工具箱、可將其拖放到表單上,也可以在設計介面上進行操作。
- 每個控制項都是一個元件,但每個元件不一定是控制項。
- Reference:類別、元件和控制項的比較 - MSDN
[ 數據集合 ]
- Array:事先需確定元件數量及類型,操作也沒彈性,但效能最好
- ArrayList:元件都存為Object,因此元件可為不同類型;效能比 List(Of T) 差
- List(Of T):ArrayList 的泛型版本,元件類型必須相同
- HashTable:依鍵值,key 和 value 都為 Object
- Dictionary:HashTable 的泛型版本
- [ Array、ArrayList、List(T) 的比較 ]
MSDN - ArrayList 和 List 集合類型
C#中数组、ArrayList和List三者的区别 - 张信秀
ArrayList 與 List<> 執行效能比較 - 余小章 - 其他集合型別:一般 / 泛型 Generic Collection 集合型別介紹 - 余小章
- Collection Class
> Visual Basic .NET 集合類別 - MSDN
> 逐步解說:建立您自己的集合類別 - MSDN
> Controls 也是集合,但無法和 Collection,參考: Visual Basic .NET 中的集合 - MSDN
[ Setup Project ]
- 【C#】建立執行應用程式安裝檔 Setup and Deployment on Visual Studio 2008 ~ Marc Talk
- 为C#应用程序创建Visual Studio安装项目生成MSI包安装程序 - litdwg的专栏
- 部署應用程式和元件 - MSDN
- Visual Studio .NET 的部署與安裝 @ jiing的網誌
[ Component: BackgroundWorker ]
- 傳遞參數:
1. 假設要傳遞字串 s
2. 啟動工作並將參數 s 傳給DoWork:BackgroundWorker1.RunWorkerAsync(s)
3. 在DoWork事件中接收參數(字串s):Dim s As String = e.Argument
4. 在DoWork事件中, 將要給 RunWorkerCompleted 事件的參數傳出:e.Result = s
5. 在 RunWorkerCompleted 事件中接收 DoWork 送出的參數: Dim s As String = e.Result
Sub BackgroundWorker1_Start()
Dim s As String = "123"
BackgroundWorker1.RunWorkerAsync(s)
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim s As String = e.Argument
e.Result = s & "789"
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
Dim s As String = e.Result
End Sub
[ 以系統管理員權限啟動 ]
[ Windows服務控制元件 ]
- ServiceController 類別 (System.ServiceProcess) - MSDN
- 取得服務列表: ServiceController.GetServices()
留言列表