zoukankan      html  css  js  c++  java
  • 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";
                }
    
     }
    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
  • 相关阅读:
    树状数组|求逆序数
    Mapreduce之分区与自定义计数器
    yb课堂 前端项目目录结构创建和讲解 《三十三》
    yb课堂 VueCli 4.3搭建yb课堂前端项目架构 《三十二》
    yb课堂 ECMAScript 6常见语法快速入门 《三十一》
    yb课堂 前端项目技术组件概述 《三十》
    yb课堂 新版VueCli 4.3创建vue项目,Vue基础语法入门 《二十九》
    yb课堂 新版Vue+脚手架Vue-Cli 4.3安装 《二十七》
    yb课堂 搭建node环境和npm安装 《二十六》
    yb课堂 VSCODE编译器和开发环境搭建 《二十五》
  • 原文地址:https://www.cnblogs.com/51net/p/3745547.html
Copyright © 2011-2022 走看看