Winform中的DataGridView数据绑定控件有时会用到ComboBox列,想要显示ComboBox列的内容需要点击两到三次才可以。这使操作变得很麻烦,降低了易用性,尤其是在程序部署在一些小型设备或者触摸屏设备上时,则更为不便。下面介绍两种方法解决这个问题。
首先,我们创建一个Windows应用程序,在窗体中拖拽一个DataGridView控件,命名为dataGridView。要确保该控件的“启用编辑”选项勾选。下面我们动态创建列,以及添加一行数据。写一个函数IniteDGV,在窗体Shown事件中调用函数。
代码段 1 private void IniteDGV() 2 { 3 DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn(); 4 combo.HeaderText = "comboBox列"; 5 combo.Name = "combo"; 6 combo.Width = 80; 7 combo.DataSource=(new string[] { "0", "1", "2" }); 8 9 DataGridViewTextBoxColumn textbox = new DataGridViewTextBoxColumn();10 textbox.HeaderText = "textbox列";11 textbox.Name = "textbox";12 textbox.Width = 100;13 14 dataGridView.Columns.AddRange(combo, textbox);15 DataGridViewRow row = new DataGridViewRow();16 dataGridView.Rows.Add(row);17 18 19 20 if (dataGridView.Columns.Contains("combo") )21 {22 row.Cells["combo"].Value = "0";23 }24 25 }
好了,以上基本工作做完了,下面说其中一个方法。
方法一:
在DataGridView控件的CellClick事件中添加如下代码:
CellClick事件 1 private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e) 2 { 3 if (e.RowIndex >= 0 && e.ColumnIndex >= 0) 4 { 5 DataGridViewComboBoxColumn combo = dataGridView.Columns[e.ColumnIndex] as DataGridViewComboBoxColumn; 6 if (combo != null) //如果该列是ComboBox列 7 { 8 dataGridView.BeginEdit(false); //结束该列的编辑状态 9 DataGridViewComboBoxEditingControl comboEdite = dataGridView.EditingControl as DataGridViewComboBoxEditingControl;10 if (comboEdite != null)11 {12 comboEdite.DroppedDown = true; //展现下拉列表13 }14 }15 16 17 DataGridViewTextBoxColumn textbox = dataGridView.Columns[e.ColumnIndex] as DataGridViewTextBoxColumn;18 if (textbox != null) //如果该列是TextBox列19 {20 dataGridView.BeginEdit(true); //开始编辑状态21 }22 }23 }
方法二:
在DataGridView的CellEnter事件中添加如下代码:
CellEnter事件 1 private void dataGridView_CellEnter(object sender, DataGridViewCellEventArgs e) 2 { 3 DataGridView dgv = sender as DataGridView; 4 5 if (dgv != null) 6 { 7 if (dgv.Columns[e.ColumnIndex].Name == "combo" && 8 dgv.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn) 9 {10 SendKeys.Send("{F4}"); //选中ComboBox列时,相当于按了键盘的F4键11 }12 }13 }posted on 2012-02-12 19:43 Johnny_Z 阅读( ...) 评论( ...) 编辑 收藏
转载于:https://www.cnblogs.com/Johnny_Z/archive/2012/02/12/2348235.html
