[C# WinForm] 如何讓 ComboBox 也能設定值 (Value) 與名稱 (Text)

[C# WinForm] 如何讓 ComboBox 也能設定值 (Value) 與名稱 (Text)

在 WinForm 原始的 ComboBox 下拉中,只能設定單一的值,輸入什麼值,就會看到什麼值。而我們在 WebForm 建立下拉 (DropDownList) 物件時,可以設定值 (Value) 與名稱 (Text)。我們習慣顯示使用者看的懂的名稱,而背後傳遞代碼到後台。本文將會教你如何讓 WinForm ComboBox 也能設定值 (Value) 與名稱 (Text)

以前在使用 WinForm ComboBox 時,它並沒有值 (Value) 與名稱 (Text) 區別的概念,我們也就這樣設計畫面了,在 ComboBox 的屬性「items」集合中設定什麼值就出現什麼值。

所看到的畫面。

如果我們的資料有值與名稱的分別,例如:
1:C#
2:Java
3:PHP
4:Python

想要讓使用者下拉一樣看到 “C#” ,而得到的值為 “1”,那要怎麼做呢?

除了介紹值與名稱的使用方法,還會額外提供索引取值、移除項目、DataTable 綁定內容等方法。

建立新類別: ComboBoxItem

此類別是讓 ComboBox 下拉內容放入此物件,就可以有值 (Value) 與名稱 (Text) 的區別。

建立新類別: ComboUtil

此類別是操作 ComboBox 執行設定值、取值、刪除等共用方法。

新下拉使用方法說明

上面建立了新類別,這裡就介紹一下有哪些使用方式。

我在 Form 建立一個 ComboBox,ID 為 “comboBox1”。

增加下拉項目

在 Form_Load 初始畫面,增加 ComboBox 可選擇的項目。

運行後看到的畫面,只會出現名稱部份。

取得下拉項目

新建一個 Button 來執行語法。
呼叫 GetItem() 方法,目前下拉停在 “C#”,取得 “C#” 的值,結果是 “1”。

設定下拉值

呼叫 SetItemValue() 方法,傳入值為 “2”,將下拉顯示值為 “2” 的名稱,結果是 “Java”。

取得索引下拉項目

下拉物件沒有被選擇,也可以直接傳入索引值,來取得名稱。
呼叫 GetItem() 方法,傳入索引值 2,取得索引值 2 的名稱,顯示結果為 “PHP”。

移除下拉項目

呼叫 RemoveItem() 方法,傳入值為 “4” (名稱是 “Python”),執行後,下拉就會看不到 “Python”。

DataTable 綁定下拉項目

這個做法是仿照 WebForm 的方法,將 DataTable 的欄位,綁定到 DropDownList 裡面,類似以下這語法。

這裡我也建立一個 DataTable ,然後呼叫 BindTableToDDL() 方法,將指定欄位 “Code 和 “Name” 名稱來綁定下拉項目。

相關學習文章

如果你在學習上有不懂的地方,可以參考線上家教服務

如果你喜歡這篇文章,請幫我在上方綠色的拍手圖示按 5 下
使用 Google 或 FB 免費登入,你的鼓勵支持我繼續創作,寫出好的文章

[加入社團一起討論] 或是 [追蹤 Instagram]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *