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 }
  • 相关阅读:
    Linux tmux 工具
    HTML 注释
    HTML 引用
    HTML 格式化
    /etc/services
    Linux ss 命令
    Python cookielib 模块
    爬取需要登录的页面
    hasattr() 、getattr() 、setattr()
    爬取文本
  • 原文地址:https://www.cnblogs.com/Johnny_Z/p/2348235.html
Copyright © 2011-2022 走看看