前言
前篇文章都是靠設計頁面完成,但是如果我想要直接靠程式碼動態給予 DataGridViewComboBoxColumn 選項資料,所以此篇來做一些簡單應用。
正文
方式一
在設計頁面的時候,給予這 DataGridViewComboBoxColumn 欄位一個 Name,然後如下
| 12
 3
 4
 5
 6
 7
 8
 
 | private void gvInit() {gvGender.Items.Clear();
 gvGender.Items.AddRange(new object[] {
 "Male",
 "Female",
 "test"});
 gvSample.DataSource = dt;
 }
 
 | 
方式二
使用 Class 撰寫一個 Text 與 Value 的類別,類似網頁下拉選單的選項
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | 
 
 public class ComboData {
 public ComboData(string text, string value) {
 Display = text;
 Value = value;
 }
 public string Display { get; set; }
 public string Value { get; set; }
 }
 
 | 
接著初始化的時候,把選項塞進去
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | private void gvInit() {gvGender.Items.Clear();
 
 
 gvGender.Items.Add(new ComboData("Male", "1"));
 gvGender.Items.Add(new ComboData("Female", "0"));
 gvGender.Items.Add(new ComboData("test", "2"));
 gvGender.DisplayMember = "Display";
 gvGender.ValueMember = "Value";
 gvSample.DataSource = dt;
 }
 
 | 
cbGender.SelectedValue 就是類別中的 Value, cbGender.Text 就會是 Display,所以注意一下新增動作的時候,要變更為
| 12
 3
 4
 5
 6
 7
 8
 
 | private void button1_Click(object sender, EventArgs e) {DataRow dr = dt.NewRow();
 dr["Name"] = txtName.Text.Trim();
 dr["Gender"] = cbGender.SelectedValue;
 dr["Married"] = ckMarried.Checked ? 1 : 0;
 dr["Birthday"] = dtpBirthday.Value;
 dt.Rows.Add(dr);
 }
 
 | 
畫面呈現
與前篇相同,主要在程式碼的操作不同


範例程式
Github 上的 Sample Code
參考資料