有一个dataGridView ,有一列是DataGridViewComboBoxColumn 。用动态绑定,在绑定数据的时候。我们也给这一列绑定数据

在dataGridView的RowsAdded事件中写代码

 
        /// <summary>
/// 添加新行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgvGoodsType_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
DataTable dt = DAL.SQLHelper.Adapter("select type from OrderType");
       //这里的 "T_分类" 是DataGridViewComboBoxColumn列名。
DataGridViewComboBoxColumn cbb = dgvGoodsType.Columns["T_分类"] as DataGridViewComboBoxColumn;
if (cbb != null)
{
cbb.DefaultCellStyle.NullValue = lbType.Text;//显示默认值 根据自己的需求改
cbb.DataPropertyName = "type";
cbb.ValueMember = "type";
cbb.DisplayMember = "type";
cbb.DataSource = dt;
}
}
 

这里的DataGridViewComboBoxColumn 默认显示的下拉框,选择时需要点击三次,第一次选中单元格,第二次启用编辑,第三次打开下拉框。如果需要一次点击打开下拉框,可以启用DataGridView的CellEnter()事件,代码如下:

 
       private void dgvGoodsType_CellEnter(object sender, DataGridViewCellEventArgs e)
{
//实现单击一次显示下拉列表框
if (dgvGoodsType.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn && e.RowIndex != -1)
{
SendKeys.Send("{F4}");
}
}
 

接下来我们给DataGridViewComboBoxColumn添加选择事件。当我们选择时。触发事件。需要在EditingControlShowing事件里面写。如下:

 
        ComboBox cbo = new ComboBox();

        private void dgvGoodsType_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
//判断相应的列
//dgvGoodsType.Tag = dgvGoodsType.CurrentCell.RowIndex; //保存索引值 if (dgvGoodsType.CurrentCell.OwningColumn.Name == "T_分类" && dgvGoodsType.CurrentCell.RowIndex != -1)
{
cbo = e.Control as ComboBox; //保存当前的事件源。为了触发事件后。在取消
cbo.SelectedIndexChanged += new EventHandler(cbo_SelectedIndexChanged);
}
}
void cbo_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox combox = sender as ComboBox;
        //这里就可以写。触发后是逻辑代码
MessageBox.Show(combox.Text);
        
      //combox.Text和cbo.Text获取的值是相同的
      
//做完处理,须撤销动态事件。如果不撤销会遇到什么问题。你可以自己试试
cbo.SelectedIndexChanged -= new EventHandler(cbo_SelectedIndexChanged);
        //或者
      combox.SelectedIndexChanged -= new EventHandler(cbo_SelectedIndexChanged);
}
 

正如上面说的。如果你不取消SelectedIndexChanged事件。当你触发一个ComboBox。后。你在点击第二次。会触发之前的事件。在触发当前的事件

以至于以此类推。触发事件会很多。

最新文章

  1. 序列化,反序列化和transient关键字
  2. MVC实用架构设计(三)——EF-Code First(5):二级缓存
  3. 写程序该选Mac 还是PC ?(转)
  4. 【IOS】从android角度来实现(理解)IOS的UITableView
  5. Linux Network Related Drive
  6. android笔记:ViewPager实现界面的滑动
  7. requireJs和r.js压缩工具
  8. matlab图形句柄属性总结
  9. centos7初步配置
  10. 4、什么构成了我们Android应用程序?(七大件)
  11. IE浏览器下读取客户端上传的文件大小
  12. JS控制菜单样式切换
  13. 警惕 MySql 更新 sql 的 WHERE 从句中的 IN() 子查询时出现的陷阱
  14. ASP.NET中的Response
  15. mongodb 安装到创建用户,认证auth,httpinterface
  16. python之字典
  17. 初学PHP心得(第一天)
  18. LDAP客户端在Windows环境的部署及配置
  19. react-navigation使用之嵌套和跳转
  20. 【Java基础】【18Map集合&amp;模拟斗D主X排和F排】

热门文章

  1. 手写一个关于title属性自定义提示框解决浏览器(IE)不兼容问题
  2. scala多线程
  3. 【架构】SpringCloud 注册中心、负载均衡、熔断器、调用监控、API网关示例
  4. UVA 11573 - Ocean Currents(BFS+优先队列)
  5. 关于Haxe3新特性“内联构造方法”的解释
  6. 微信小程序 - switchTab传值
  7. Node使用淘宝 NPM 镜像
  8. java创建线程的三种方式及其对比
  9. 3DMax脚本插件--改动材质&amp;amp;贴图名称
  10. Best Time to Buy and Sell Stock I &amp;amp;&amp;amp; II &amp;amp;&amp;amp; III