zoukankan      html  css  js  c++  java
  • DataGridView的DataGridViewComboBoxColumn列点击一次

    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 }
  • 相关阅读:
    JavaSE 基础 第51节 定义自己的异常
    JavaSE 基础 第50节 Java中的异常链
    JavaSE 基础 第49节 手动抛出异常
    JavaSE 基础 第48节 Java中的异常声明
    JavaSE 基础 第47节 获取异常信息
    JavaSE 基础 第46节 异常的分类
    JavaSE 基础 第45节Java异常快速入门
    JavaSE 基础 第44节 引用外部类的对象
    JavaSE 基础 第43节 静态内部类
    通用爬虫
  • 原文地址:https://www.cnblogs.com/Johnny_Z/p/2348235.html
Copyright © 2011-2022 走看看