应用场景:

  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事件。

c# dataGridView cell添加下拉框的更多相关文章

  1. DateGridView中添加下拉框列并实现数据绑定、更改背景色

    1.添加下拉框 代码实现==> using System; using System.Collections.Generic; using System.Windows.Forms; names ...

  2. Revit 命令添加下拉框

    在学习revit制作下拉框时,需要分为三个步骤: 1.创建一个面板(panel). RibbonPanel panel10 = application.CreateRibbonPanel(Global ...

  3. Excel中添加下拉框

    数据->数据验证->数据验证 设置—>允许下拉框中选择序列,来源中写下拉选项,每个选项之间用逗号隔开

  4. .net添加下拉框

    aspx文件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="DropDownL ...

  5. jquery 动态添加下拉框 需要增加 煊染 selectmenu("refresh");

    若通过js动态选择下拉框的值必须刷新下拉框,例如:var selArray = $("select#sel");selArray[0].selectedIndex = 1;selA ...

  6. 为Ext添加下拉框和日期组件

    Ext.onReady(function(){ var config = { fields:['module'], data:[['新建'],['删除'],['增加']}; var store = n ...

  7. 在ALV界面添加下拉框

    1.在alv界面表单属性中设置 if wa_fieldcat-fieldname = 'YC_MARK'.              wa_fieldcat-edit = 'X'.           ...

  8. DataTables给每一列添加下拉框搜索

    $(document).ready(function() { $('#example').DataTable( { initComplete: function () { var api = this ...

  9. table中添加下拉框

    { file: 'usename', title: '下发用户', width:"20%", align: 'center', templet: function (d) { va ...

随机推荐

  1. [python] os.path模块常用方法汇总

    os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径) ...

  2. 微信小程序点击 navigator ,页面不跳转

    1.navigator 对应的 url 必须配置在app.json的pages中: 2.navigator 对应的 url 不能配置在"tabBar"的"list&quo ...

  3. 20165318 2017-2018-2《Java程序设计》课程总结

    20165318 2017-2018-2<Java程序设计>课程总结 一.每周作业链接汇总 每周作业链接汇总 预备作业1:我期望的师生关系 预备作业2:C语言基础调查和java学习展望 预 ...

  4. tomcat Win10 配置环境变量详解

    在Win10系统总该如何配偶之tomcat 环境变量?今天win10之家给大家带来了关于win10系统中配置tomcat环境的操作方法.在配置之前我们需要做以下几点: 步骤:安装和配置好了Java 的 ...

  5. MetaMask/provider-engine-1

    https://github.com/MetaMask/provider-engine 在学习这个之前应该先看一下什么是zero-client,MetaMask/zero-client Web3 Pr ...

  6. Python2.7-csv

    csv模块,用于读写 csv 文件,常用 reader 和 writer 对象进行操作 1.模块的类 1.1 Dialect 对象,设置 csv 文件的各种格式,包括分隔符,引用符,转义符等 1.1. ...

  7. 【小程序】<image>图片实现宽度100%时,高度自适应

    *.wxss样式设置 .img{ width:100% } *.wxml给<image>标签添加属性  mode="widthFix" <image class= ...

  8. 20155333 《网络对抗》 Exp7 网络欺诈防范

    20155333 <网络对抗> Exp7 网络欺诈防范 基础问题 通常在什么场景下容易受到DNS spoof攻击? 公共网络 在日常生活工作中如何防范以上两种攻击方法? DNS欺骗攻击是很 ...

  9. vue-cli,build 后,报错的解决办法

    报错如下图: 或: 解决办法:config / index.js 中,找到 build { assetsPublicPath: '/' },将其设置为:assetsPublicPath: './ ' ...

  10. WPF的DataTrigger绑定自身属性

    原文:WPF的DataTrigger绑定自身属性 <DataTrigger Binding="{Binding RelativeSource={RelativeSource self} ...