博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# dataGridView cell添加下拉框
阅读量:6530 次
发布时间:2019-06-24

本文共 3312 字,大约阅读时间需要 11 分钟。

应用场景:

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

转载于:https://www.cnblogs.com/gaara-zhang/p/10631153.html

你可能感兴趣的文章
Atitit.工作流系统的本质是dsl 图形化的dsl 4gl
查看>>
I.MX6 Android USB Touch eGTouchA.ini文件存放
查看>>
4-5-创建索引表-串-第4章-《数据结构》课本源码-严蔚敏吴伟民版
查看>>
java 操作 RabbitMQ 发送、接受消息
查看>>
go run main.go undefined? golang main包那点事
查看>>
前端进阶(13) - 搭建自己的前端脚手架
查看>>
数据挖掘(二):认识数据
查看>>
从零开始写一个npm包,一键生成react组件(偷懒==提高效率)
查看>>
Golang中的路由
查看>>
【期末考试季】JAVA进阶复习提纲
查看>>
Volley(二)—— 基本Request对象 & RequestQueue&请求取消
查看>>
2017中国系统架构师大会“盛装”来袭
查看>>
Google插件switchysharp的用法
查看>>
中国最强的人工智能学术会议来了
查看>>
Metasploit的射频收发器功能 | Metasploit’s RF Transceiver Capabilities
查看>>
Osmocom-BB中cell_log的多种使用姿势
查看>>
主库 归档 删除策略
查看>>
linux服务器多网卡bond
查看>>
Chrome 更新策略大变:优先安装 64 位版本
查看>>
《Linux从入门到精通(第2版)》——导读
查看>>