添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

本文转载: 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";
  View Code 
 

好了,以上基本工作做完了,下面说其中一个方法。

在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); //开始编辑状态
  View Code 
 

在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键
  View Code