应用场景:

  dataGridView需要某一个cell变成下拉框样式。

思路详解:

  dataGridVie添加固定格式的row。

代码:

                    DataGridViewRow row = new DataGridViewRow();
row.Cells.Add(new DataGridViewTextBoxCell());
DataGridViewComboBoxCell comboxcell = new DataGridViewComboBoxCell(); comboxcell.Items.Add("九");
comboxcell.Items.Add("平");
comboxcell.Items.Add("气");
comboxcell.Items.Add("阴");
comboxcell.Items.Add("阳");
comboxcell.Items.Add("痰");
comboxcell.Items.Add("气");
comboxcell.Items.Add("血");
comboxcell.Items.Add("特");
comboxcell.Items.Add("湿");
row.Cells.Add(comboxcell);
row.Cells.Add(new DataGridViewTextBoxCell());
row.Cells.Add(new DataGridViewTextBoxCell());
row.Cells.Add(new DataGridViewTextBoxCell());
dataGridView_pinggu.Rows.Add(row);

下拉框事件代码:

private void dataGridView_pinggu_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
DataGridView dgv = sender as DataGridView; //判断相应的列
if (dgv.CurrentCell.GetType().Name == "DataGridViewComboBoxCell" && dgv.CurrentCell.RowIndex != -1)
{ //给这个DataGridViewComboBoxCell加上下拉事件
(e.Control as ComboBox).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged); }
}
public void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{ ComboBox combox = sender as ComboBox; //这里比较重要
combox.Leave += new EventHandler(combox_Leave);
try
{
//在这里就可以做值是否改变判断
if (combox.SelectedItem != null)
{
Console.WriteLine(combox.SelectedItem.ToString());
int manNum = ShuJuFenXiService.getNumBySexAndProjectID("0", tizhiDic[combox.SelectedItem.ToString()]);
int famNum = ShuJuFenXiService.getNumBySexAndProjectID("1", tizhiDic[combox.SelectedItem.ToString()]);
dataGridView_pinggu.Rows[1].Cells[1].Value = combox.SelectedItem.ToString();
dataGridView_pinggu.Rows[1].Cells[2].Value = manNum + famNum;
dataGridView_pinggu.Rows[1].Cells[3].Value = manNum;
dataGridView_pinggu.Rows[1].Cells[4].Value = famNum;
dataGridView_pinggu.Rows[1].Cells[5].Value = tizhiDic[combox.SelectedItem.ToString()];
}
Thread.Sleep(100);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public void combox_Leave(object sender, EventArgs e)
{
ComboBox combox = sender as ComboBox;
//做完处理,须撤销动态事件
combox.SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged);
}

难点:

  1.注意dataGridView属性readOnly,设成false(界面模板设置))。要不然下拉框不显示。如果需要不可编辑,可以设定单元格的readOnly属性: dataGridView_pinggu.Rows[1].Cells[1].ReadOnly = true;

  2.下拉框事件仅需给datagridview添加EditingControlShowing事件。

最新文章

  1. scanf类型不匹配造成死循环
  2. java基于socket的简单聊天系统
  3. 利用PHP的register_shutdown_function来记录PHP的输出日志,模拟析构函数
  4. SWFUpload简介及中文参考手册(share)
  5. .net项目引用C++ 动态链接库.dll
  6. python中的metaclass
  7. MyBatis关联查询分页
  8. 2016 - 1 - 20 runloop学习
  9. 导航控制器(UINavigationController)
  10. android 链接蓝牙不稳定的解决建议
  11. retrofit2学习
  12. Akka(26): Stream:异常处理-Exception handling
  13. leetcode 566 Reshape the Matrix 重塑矩阵
  14. 前置通知也能对参数进行加工 通过joiPoint这个方法
  15. OraclePLSQL编程
  16. [hdu P4114] Disney's FastPass
  17. Linux之安装虚拟机/虚拟操作系统[VisualBox]
  18. 使用Git,如何忽略不需要上传的文件(配置文件)
  19. C# 登录窗口的设计技巧
  20. Linux学习2-在阿里云服务器上部署禅道环境

热门文章

  1. 打开Excel时提示“向程序发送命令时出现问题”
  2. console.time方法与console.timeEnd方法
  3. python第三十九课——面向对象(二)之设计类
  4. resnet模型详细结构
  5. 关于checkbox自动选中
  6. Centos7 安装Nodejs
  7. 609E- Minimum spanning tree for each edge
  8. 五,ESP8266 TCP服务器多连接(基于Lua脚本语言)
  9. day 21 今日学习内容
  10. php操作url 函数等