在配置編輯器的時候,像是等級、血量之類數值的類型
要檢查範圍又要配置差不多的控制項,整個很無趣又容易出錯
剛好看到.NET有提供這種樣板類型的方法
逐步解說:使用 Visual C# 撰寫使用者控制項
一直不太喜歡msdn的教學,感覺很雜亂(或是太細節?)
搞了老半天才發現我看錯選項,浪費了不少時間
以下是我製作的步驟…
範例檔: 005_MyWFCLib.rar
1. 開啟 > 新增 > 專案 > C# > WindowsForm 控制項程式庫(WindowsFormsControlLibrary)
如果選對的話,預設名稱會是 WindowsFormsControlLibraryX ,別選錯嘿!
2. 更改檔案名稱
預設控制項的名稱是 UserControl1 ,我習慣給他有意義的名稱,這裡改為 ucNumericItem
3. 控制項配置
名稱 | 類別 |
lblItemName | Label |
txtItemValue | TextBox |
tkbItemValue | TrackBar |
4. 加入 ChangeValue()
點進去程式碼撰寫的地方,加入統一改變值的方法
private void ChangeItemVaule(int value) { // 取得最大最小值 int maxV = this.tkbItemValueBar.Maximum; int minV = this.tkbItemValueBar.Minimum; // 檢測範圍 // 設定資料 |
5. 處理事件
增加以上兩個事件來編寫code
private void txtItemValue_KeyDown(object sender, KeyEventArgs e) { // 當使用者在控制項按下 Enter 導向 ChangeValue() if (e.KeyCode == Keys.Return) this.ChangeItemVaule(Convert.ToInt32(this.txtItemValue.Text)); } private void tkbItemValueBar_Scroll(object sender, EventArgs e) |
6. 自訂資料
既然自訂控制項,那麼也要加入特定的項目來取得&改寫內容
/// <summary> /// 項目目前的值 /// </summary> public int ItemValue { get { return this.tkbItemValueBar.Value; } set { this.ChangeItemVaule(value); } } /// <summary> /// 項目的最大值 /// </summary> public int ItemValueMax { get { return this.tkbItemValueBar.Maximum; } set { this.tkbItemValueBar.Maximum = value; } } /// <summary> /// 項目的最小值 /// </summary> public int ItemValueMin { get { return this.tkbItemValueBar.Minimum; } set { this.tkbItemValueBar.Minimum = value; } } /// <summary> /// 項目名稱 /// </summary> public string ItemName { get { return this.lblItemName.Text; } set { this.lblItemName.Text = value; } } |
7. 建置&預覽
一切都準備好了!按下F5或者綠色箭頭吧!
你應該看到這樣…
紅框內屬性項目,就是我們在第 6 個步驟加入的,試著改改看吧!
左邊就是控制項的預覽,試著操作看看吧!
8. 測試
在原來的方案中加入一個新的專案(你也可以再開一個新的方案)
打開之後,開啟[工具箱],找到你剛才建置的DLL檔,拖進[一般]的分類裡面
應該就會出現 ucNumericItem 的元件了!
比較正式的程序:
[一般]分類上右鍵 > 選擇項目 > .NET Fram
ework元件 > 瀏覽 > 確定
哎呀!用拖的卡簡單啦XD
另外,當你開始使用的時候,會自動加入命名空間的參考!
使用的參考圖~
左邊是設計模式,右邊是執行模式。
呼~真長的一篇…
使用者控制項應該是個不錯用的東西,一定要筆記一下的啦
哪邊怪怪的或看不懂記得提醒一下O_O