Theme NexT works best with JavaScript enabled

ShunNien's Blog

不積跬步,無以致千里;不積小流,無以成江海。

0%

DataGridView 在 Winform 的簡單操作(4)

前言

前篇文章都是靠設計頁面完成,但是如果我想要直接靠程式碼動態給予 DataGridViewComboBoxColumn 選項資料,所以此篇來做一些簡單應用。

正文

方式一

在設計頁面的時候,給予這 DataGridViewComboBoxColumn 欄位一個 Name,然後如下

1
2
3
4
5
6
7
8
private void gvInit() {
gvGender.Items.Clear();
gvGender.Items.AddRange(new object[] {
"Male",
"Female",
"test"});
gvSample.DataSource = dt;
}

方式二

使用 Class 撰寫一個 TextValue 的類別,類似網頁下拉選單的選項

1
2
3
4
5
6
7
8
9
10
11
/// <summary>
/// comboBox Items
/// </summary>
public class ComboData {
public ComboData(string text, string value) {
Display = text;
Value = value;
}
public string Display { get; set; }
public string Value { get; set; }
}

接著初始化的時候,把選項塞進去

1
2
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 就是類別中的 ValuecbGender.Text 就會是 Display,所以注意一下新增動作的時候,要變更為

1
2
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);
}

畫面呈現

與前篇相同,主要在程式碼的操作不同
Result
DataSource

範例程式

Github 上的 Sample Code

參考資料

歡迎關注我的其它發布渠道