效果圖
在winfrom中拖入一個DataGridView控件
private void Form1_Load(object sender, EventArgs e) { DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn(); column.Name = "ID"; column.DataPropertyName = "id";//對應數據源的字段 column.HeaderText = "ID"; column.Width = 80; this.dataGridView1.Columns.Add(column); DataGridViewComboBoxColumn column1 = new DataGridViewComboBoxColumn(); column1.Name = "Name"; column1.DataPropertyName = "Name";//對應數據源的字段 column1.HeaderText = "姓名"; column1.Width = 80; this.dataGridView1.Columns.Add(column1); List<string> ListData = new List<string> { "張三", "里斯", "王六" }; column1.DataSource = ListData; //這里需要設置一下combox的itemsource,以便combox根據數據庫中對應的值自動顯示信息 //綁定數據源 dataGridView1.DataSource = CreateTable(); }
private DataTable CreateTable() { DataTable dt = new DataTable(); //創建一個空表 DataColumn column =new DataColumn(); //創建一個空列 column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "id"; dt.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "Name"; dt.Columns.Add(column); DataRow row = dt.NewRow(); //創建行 row["id"] = 0; row["Name"] = "張三"; dt.Rows.Add(row); //顯示 return dt; }
當想修改Combox列的數據時,或是想通過Combox的改變做文章的要用到dataGridView1_EditingControlShowing這個事件,即編輯dataGriview中的數據就會觸發該事件
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { ComboBox combo = e.Control as ComboBox; if (combo != null) { combo.SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged); } }
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ComboBox combo = sender as ComboBox; string selectedItem = combo.Text;//拿到選擇后的值 }
C# winform中datagridview內置的Combobox在點擊時需要點擊兩下才彈出下拉框的解決方法:
將DataGridView屬性 EditMode 為 EditOnEnter!
轉 : https://www.cnblogs.com/ZLGBloge/p/4415155.html