Johnny_Z

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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  阅读(2268)  评论(1编辑  收藏  举报