DataGridView的DataGridViewComboBoxColumn列点击一次,自动处于编辑状态

简介: 本文转载:http://www.cnblogs.com/Johnny_Z/archive/2012/02/12/2348235.html Winform中的DataGridView数据绑定控件有时会用到ComboBox列,想要显示ComboBox列的内容需要点击两到三次才可以。

本文转载: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

 

目录
相关文章
|
存储 算法
树(Tree) - 概念与基础
树(Tree) - 概念与基础
|
Ubuntu 安全 Unix
重置Jetson设备的Ubuntu密码:通过挂载根目录到另一个Linux系统
在本文中,我们将介绍如何在忘记Ubuntu 20.04密码的情况下重置密码。我们将通过将Ubuntu的根目录挂载到另一个Linux系统来实现这一目的。我们还将介绍chroot命令的功能。
906 0
重置Jetson设备的Ubuntu密码:通过挂载根目录到另一个Linux系统
|
网络安全
kali 启用默认root,开启SSH服务,安装VNC,设置服务自启动
启用默认root,开启SSH服务,设置服务自启动,安装VNC
|
JavaScript 前端开发
vue 实现word文档预览和下载
vue 实现word文档预览和下载
1754 0
pyqt6 制作一个颜色调节器 01
本文介绍了一个使用 PyQt 制作的颜色调节器,通过滑动滚动条或旋钮来调整 RGB 三色,实现颜色的微调。具体步骤包括:1. 设计 UI 页面;2. 分析颜色调整逻辑;3. 将数据反馈到 UI 页面。最终实现了颜色随滑块变化而实时更新的效果。
|
存储 关系型数据库 MySQL
MySQL高级篇——覆盖索引、前缀索引、索引下推、SQL优化、主键设计
覆盖索引、前缀索引、索引下推、SQL优化、EXISTS 和 IN 的区分、建议COUNT(*)或COUNT(1)、建议SELECT(字段)而不是SELECT(*)、LIMIT 1 对优化的影响、多使用COMMIT、主键设计、自增主键的缺点、淘宝订单号的主键设计、MySQL 8.0改造UUID为有序
MySQL高级篇——覆盖索引、前缀索引、索引下推、SQL优化、主键设计
|
Java Shell 文件存储
mac安装多版本jdk
mac安装多版本jdk
1003 0
mac安装多版本jdk
|
自然语言处理 Java API
如何在Java中实现多语言国际化支持
如何在Java中实现多语言国际化支持
N..
|
存储 JSON 前端开发
JSON
JSON
N..
579 1
|
XML Java 数据格式
Spring5源码(8)-BeanFactory和FactoryBean的区别
Spring5源码(8)-BeanFactory和FactoryBean的区别
210 0