DataGridView的DataGridViewComboBoxColumn列点击一次,自动处于编辑状态
本文转载:http://www.cnblogs.com/Johnny_Z/archive/2012/02/12/2348235.html
Winform中的DataGridView数据绑定控件有时会用到ComboBox列,想要显示ComboBox列的内容需要点击两到三次才可以。这使操作变得很麻烦,降低了易用性,尤其是在程序部署在一些小型设备或者触摸屏设备上时,则更为不便。下面介绍两种方法解决这个问题。
首先,我们创建一个Windows应用程序,在窗体中拖拽一个DataGridView控件,命名为dataGridView。要确保该控件的“启用编辑”选项勾选。下面我们动态创建列,以及添加一行数据。写一个函数IniteDGV,在窗体Shown事件中调用函数。
private void IniteDGV() { DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn(); combo.HeaderText = "comboBox列"; combo.Name = "combo"; combo.Width = 80; combo.DataSource=(new string[] { "0", "1", "2" }); DataGridViewTextBoxColumn textbox = new DataGridViewTextBoxColumn(); textbox.HeaderText = "textbox列"; textbox.Name = "textbox"; textbox.Width = 100; dataGridView.Columns.AddRange(combo, textbox); DataGridViewRow row = new DataGridViewRow(); dataGridView.Rows.Add(row); if (dataGridView.Columns.Contains("combo") ) { row.Cells["combo"].Value = "0"; } }
好了,以上基本工作做完了,下面说其中一个方法。
方法一:
在DataGridView控件的CellClick事件中添加如下代码:
CellClick事件 private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0 && e.ColumnIndex >= 0) { DataGridViewComboBoxColumn combo = dataGridView.Columns[e.ColumnIndex] as DataGridViewComboBoxColumn; if (combo != null) //如果该列是ComboBox列 { dataGridView.BeginEdit(false); //结束该列的编辑状态 DataGridViewComboBoxEditingControl comboEdite = dataGridView.EditingControl as DataGridViewComboBoxEditingControl; if (comboEdite != null) { comboEdite.DroppedDown = true; //展现下拉列表 } } DataGridViewTextBoxColumn textbox = dataGridView.Columns[e.ColumnIndex] as DataGridViewTextBoxColumn; if (textbox != null) //如果该列是TextBox列 { dataGridView.BeginEdit(true); //开始编辑状态 } } }
方法二:
在DataGridView的CellEnter事件中添加如下代码:
CellEnter事件 private void dataGridView_CellEnter(object sender, DataGridViewCellEventArgs e) { DataGridView dgv = sender as DataGridView; if (dgv != null) { if (dgv.Columns[e.ColumnIndex].Name == "combo" && dgv.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn) { SendKeys.Send("{F4}"); //选中ComboBox列时,相当于按了键盘的F4键 } } }
作者:阿笨
【官方QQ一群:跟着阿笨一起玩NET(已满)】:422315558
【官方QQ二群:跟着阿笨一起玩C#(已满)】:574187616
【官方QQ三群:跟着阿笨一起玩ASP.NET(已满)】:967920586
【官方QQ四群:Asp.Net Core跨平台技术开发(可加入)】:829227829
【官方QQ五群:.NET Core跨平台开发技术(可加入)】:647639415
【网易云课堂】:https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628
【腾讯课堂】:https://abennet.ke.qq.com
【51CTO学院】:https://edu.51cto.com/sd/66c64
【微信公众号】:微信搜索:跟着阿笨一起玩NET