本文转载: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 = ;
combo.DataSource=(new string[] { "", "", "" }); DataGridViewTextBoxColumn textbox = new DataGridViewTextBoxColumn();
textbox.HeaderText = "textbox列";
textbox.Name = "textbox";
textbox.Width = ; dataGridView.Columns.AddRange(combo, textbox);
DataGridViewRow row = new DataGridViewRow();
dataGridView.Rows.Add(row); if (dataGridView.Columns.Contains("combo") )
{
row.Cells["combo"].Value = "";
} }

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

方法一:

在DataGridView控件的CellClick事件中添加如下代码:

CellClick事件
private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= && e.ColumnIndex >= )
{
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); //开始编辑状态
}
}
}

方法二:

在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键
}
}
}

DataGridView的DataGridViewComboBoxColumn列点击一次,自动处于编辑状态的更多相关文章

  1. DataGridView的DataGridViewComboBoxColumn列在编辑时自动弹出下拉列表

    在DataGridView的CellEnter的事件中添加如下代码即可: if (e.ColumnIndex == dataGridView1.Columns["仓库名"].Ind ...

  2. Extjs之rowEditing编辑状态时列不对齐

    Extjs在使用rowEditing的时候,会在每一列加上editor属性,表示当处于编辑状态时这一列的值是什么类型的,后突然发现在rowEditing处于编辑状态时每一列的宽度边框了,如果列数非常多 ...

  3. Winform 中DataGridView的checkbox列,当修改checkbox状态时实时获得其状态值

    不知道大家有没有这样的经验,当点击或者取消datagridview的checkbox列时,比较难获得其状态是选中还是未选中,进而不好进行其它操作,下面就列出它的解决办法: 主要用到了DataGridV ...

  4. DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样

    '近日有本论坛网友问:DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样 '今晚正好闲着没事,加之以前也没用到过这个需求,所以就写了个模拟功能,供各位坛友酌情参考. ...

  5. DataGridView中DataGridViewComboBoxColumn的一些相关应用(一)让其值改变时触发事件-转

    转自  https://maodaili.de/mao.php?u=a%2FMrbEvUE8PnCuc7FrhJi0Rqd3kmOBHPZUbcJ1c2hbJUK0RYWpAf4lhIOddItP%2 ...

  6. C# WinForm DataGridView 给标题列增加序号及格式化某个字段

    DataGridView 给标题列增加序号 private void dataGridView1_DataBindingComplete(object sender, DataGridViewBind ...

  7. DataGridView在Cell编辑状态响应回车键下的KeyPress/KeyDown/KeyUp事件

    我们知道由于DataGridView的单元格DataGridCell处于编辑的时候,当你按Enter键,那么DataGridView是不会激发KewPress/KeyDown/KeyUp这些事件的,因 ...

  8. vue 表格数据编辑,点击取消或者完成按钮后,关闭编辑状态没有及时生效

    点击编辑按钮: 编辑状态下,表格可以编辑.但是点击“确认”或者“取消”按钮,列数据编辑状态已经修改,但是视图没有改变. 页面代码: 获取当前行的index,并直接修改当前行用于判断是否编辑状态的数据为 ...

  9. WebBrowser自动点击链接 广告自动点击 Ads Auto Click

    点击付费广告, 是目前比较流行的一种网络营销模式, 但是,如果你单纯的靠手工一个一个去点, 总觉得不划算  , 能不能实现自动的去点击呢? 答案是肯定的 .NET 里面的 WebBrowser, 可以 ...

随机推荐

  1. ccui.ScrollView 扩展

    大多数游戏都有背包这个东西. 道具列表通常用 ScrollView 来实现. 这个ScrollView内部有一个Layout, 滑动都是由移动这个Layout来实现. 道具摆放通常从上往下, 从左到右 ...

  2. SGU 139.Help Needed!

    题意: 判断15数码问题是否有解. 如果0的偏移量和逆序对个数同奇偶则无解. 因为目标状态的偏移量为0,逆序对为15,而0移动的时候偏移量±1,逆序对的改变量为也为奇数. 这就使得偏移量和逆序对数始终 ...

  3. 【BZOJ2120】【块状链表】数颜色

    Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜 ...

  4. php学习小技巧

    1.print_r可打印数组 <?php echo '<p class="ajax">This paragraph was loaded with AJAX.&l ...

  5. 《Python 二三事》——python学习必看(转载)

        面向初学者介绍Python相关的一些工具,以及可能遇到的常见问题. 原文出处 原文作者:八八年出生的男性,互联网上常用id是 jagttt .目前正从事 IT 行业的工作.业余爱好是动漫游加电 ...

  6. dedecms 修改标题长度可以修改数据库

    数据表为dede__archives 字段为title 首先要在 a.系统->系统基本参数->其它选项->文章标题长度 b.系统->SQL命令行工具 alter table # ...

  7. php设计模式之迭代器模式

    今天的PHP设计模式系列的主角是迭代器(Iterator)模式,迭代器模式提供了抽象:位于对象图不明部分的一组对象(或标量)集合上的迭代. 迭代器(Iterator)模式,它在一个很常见的过程上提供了 ...

  8. 局部变量存储区域静态变量存储区域static变量存储区域

    局部变量存储区域静态变量存储区域static变量存储区域 常见的存储区域可分为: 1.栈 由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区.里面的变量通常是局部变量.函数参数等. 2.堆 ...

  9. Android获取相册图片

    1. AlertDialog的使用 2. 显示和隐式意图的区别 3. 相册页面的跳转 4. 选择完成后返回图片的获取 ----------------------------------------- ...

  10. centos jdk切换

        #这里找下载路径 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html    ...