C# – 使用者控制項(UserControl)

在配置編輯器的時候,像是等級、血量之類數值類型
要檢查範圍又要配置差不多的控制項,整個很無趣又容易出錯
剛好看到.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;

     // 檢測範圍
     value = Math.Max(Math.Min(value, maxV), minV);

     // 設定資料
     this.txtItemValue.Text = value.ToString();
     this.tkbItemValueBar.Value = value;
 }

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)
 {
     this.ChangeItemVaule(this.tkbItemValueBar.Value);
 }


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

–End

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.