设置DataGridView的某个单元格为ComboBox

怎么将DataGridView的 某个单元格设为ComboBox的样式而不是整列都改变样式?

1、最简单的方法:利用DataGridView提供的DataGridViewComboBoxCell。

写个简单例子:

1  DataGridViewComboBoxCell cbCell = new DataGridViewComboBoxCell();
2  string[] jgStr = new string[] {"砖混", "框混", "全框架", "其它" };
3  cbCell.DataSource = jgStr;
5  cbCell.Value =“框混”;
7  dGModelInfo.Rows[rowCount].Cells["Value"] = cbCell;

效果如图:

2、这是网上看到别人提供的,这个是编辑单元格时显示出单元格的样式,据说它能显示出任何控件的样式。

 1 private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
 2         {
 3             if (e.Control is DataGridViewTextBoxEditingControl)
 4             {
 5                 TextBox textbox = (TextBox)e.Control;
 6                 // Panel p = (Panel)textbox.Parent;       //找到当前的父控件,其实就是一个Panel,你将此Panel中的控件清空,然后你就可以在Panel中加入任何控件并随意布局了
 7                 Panel p = (Panel)e.Control.Parent;
 8                 p.Controls.Clear();
 9                 Button btn =new Button();
10                 btn.Text="aaa";
11                 btn.Click +=new EventHandler(btn_Click);
12                 p.Controls.Add(btn);
13             }
14         } 

http://hi.baidu.com/wangcaidpj219x/item/76afbb2b6d6493162a0f1c7b

另外附上几个关于DataGridView使用的链接:

DataGridView常见用法和FAQ汇总
DataGridView的一些技巧
DataGridView使用技巧大全
DataGridView 经典用法总结(上)--附有可下载的Demo
DatagridView 经典用法总结(中)--附有可下载Demo

时间: 2024-11-08 23:29:44

设置DataGridView的某个单元格为ComboBox的相关文章

【原创】有关Silverlight中“DataGrid中单元格动态绑定ComboBox单击时数据项莫名被清除 ”的解决方案及思路。

今天上班遇到一个很古怪的问题,搞了半天愣是没找到原因.是这样的,在Datagrid中有绑定一个ComboBox列,其不包含在 model数据中,而是单独在LoadingRow事件中去 从数据库拿数据绑定. 绑定成功以后,但在对 单元格进行编辑时(也就是点击ComboBox),瞬间ComboBox内内容都被莫名清空了. 查看了前台绑定的datagrid事件,并没有太多事件里 对ComboBox进行了清空操作,于是找到了一个最有嫌疑的 事件"CurrentCellChanged", 代码如

15.3获取DataGridView的当前单元格的索引和内容

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace _15._3DataGridView单元格 { pu

DataGridView数据绑定后单元格格式化

微软官网 DataGridView数据绑定后,经常需要对数据进行某种格式转换,比如说 1表示男性,2表示女性. 这时,需要用到CellFormatting事件 下面是微软官方的示例 private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {    // If the column is the Artist column, check the     // va

Winform DataGridView列的单元格中动态添加图片和文字

先上图在说,第二列中图片和文字的样式 1.需要重写DataGridViewTextBoxColumn,新建类TextAndImageColumn.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Windows.Forms; 6 using System.Drawing; 7 8 namespace DataGridView

Ext grid单元格加combobox

var store = Ext.create("app.store.healthRecordManage.form.familyRelationComboStore"); function rendererData(value, cellmeta, record){ var index = store.find("id",value); var record = store.getAt(index); var displayText = "";

c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)

一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index       Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex); // 取得当前单元格的行 Index       Console.WriteLine(DataGridView1.CurrentCell.RowIndex); ******

【大坑】DataGridView多线程更新修改Cell单元格卡死

今天做个小工具,因为最近经常用到DataGridView,所以这次没有选择ListView.忙活了一个小时终于完工了,先运行看看吧.咦!!!!怎么卡死了.代码应该没问题呀,用的多线程也不会卡UI线程呀,打开分析工具查看DataGridView赋值Cell单元格占用CPU达到了80~90,公司的G3260不堪重负的挂掉了. BackgroundWorker解决问题 上园子里找答案,解决办法倒是找到了几种.但是都不靠谱,一样的卡死,看到博问里面说用BackgroundWorker试试.Backgro

jqgrid单元格设置空值的方法

项目中使用jqgrid,在使用的场景下经常需要清空单元格内容,于是使用了下面的代码: 1 $("#jqgrid1").jqGrid('setCell',rowId, 'column', ''); 然后竟然没有起作用,值还是有的,这个不可能jqgrid没有这种方式,于是没有查文档,查看了一下页面的源代码,发现在初始化的时候,没有赋值的情况下,html的元素内容为 1 &nbsp 于是自己做了如下的代码试验: 1 $("#jqgrid1").jqGrid('se

20191012——POI设置单元格自动行高(思路)

在经过Jxls或者POI导出数据至excel中后,发现有的单元格内容太多,既没有自动换行,也没有自动增大行高.那如何通过Java代码来实现呢?请看下面步骤: (一)首先,将excel设置为最合适的行高,通过CTRow对象的setCustomHeight(false)函数实现,具体的代码如下: XSSFWorkbook workbook = new XSSFWorkbook(文件路径或者文件流); XSSFSheet sheet = workbook.getSheet(sheetIndex); X