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

最新文章

  1. Java面试题总结(二)
  2. CommonJS,AMD,CMD区别
  3. H5之contenteditable
  4. DB SQL Monitor 阻塞及等待事件监控工具
  5. SSE技术详解:一种全新的HTML5服务器推送事件技术
  6. html5网页动画总结--jQuery旋转插件jqueryrotate
  7. linux alarm函数解除read write等函数的阻塞
  8. Ubuntu中Apache修改DocumentRoot(修改网站根目录)
  9. Android TextView内容过长加省略号,点击显示全部内容
  10. #linux包之sysstat之iostat命令
  11. 【狼窝乀野狼】Serializer妙手回春
  12. 【转】ora-00031:session marked for kill(标记要终止的会话)解决方法
  13. 微软Sharepoint的一些缺点
  14. sql/plus 常用操作
  15. [图形学] Chp17 OpenGL光照和表面绘制函数
  16. 让 Homebrew 走代理更新 + brew 管理 node 版本
  17. Gartner 2018 数据库系列报告发布 巨杉数据库连续两年入选
  18. Hadoop学习笔记(五):java开发MapReduce
  19. 华硕飞马3S,日常使用续航测试
  20. json-server使用及路由配置

热门文章

  1. POJ2584 T-Shirt Gumbo 二分图匹配(网络流)
  2. PHP第一课笔记
  3. nginx 环境搭建使用之入门
  4. [r]Ubuntu Linux系统下apt-get命令详解
  5. 如何执行一个mysql的sql脚本文件
  6. Linux 查看 80 端口的占用情况
  7. redis运行状态图形化监控工具 — RedisLive
  8. JS论坛地址备忘
  9. ibatis动态语句加and 和不加and
  10. winform登录时,在密码框按下回车,直接登陆