定制DataGridViewCell,使用下拉框格式(没有直接使用DataGridViewComboBoxCell是有原因的),但遇到了如下问题我是从DataGridViewTextBoxCell派生出来的新类,重载其InitializeEditingControl方法如下 base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle); DataGridViewBrowserFieldEditingControl ctl =
DataGridView.EditingControl as DataGridViewBrowserFieldEditingControl;
ctl.Text = Convert.ToString(this.Value);其中DataGridViewBrowserFieldEditingControl是从ComboBox中派生出来应用于DataGridView的控件首先,要求下拉样式必须为DropDownList,结果发现选择后结果不能提交到DataGridView单元格中,如果为DropDown则没问题。为了能够使用DropDownList,我定义了一个如下的事件 private void OnSelectedIndexChanged(object sender, EventArgs e)
{
DataGridViewBrowserFieldEditingControl combo = sender as DataGridViewBrowserFieldEditingControl;
this.Value = combo.Text;
this.DataGridView.NotifyCurrentCellDirty(true);
} public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
{
base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle); DataGridViewBrowserFieldEditingControl ctl =
DataGridView.EditingControl as DataGridViewBrowserFieldEditingControl;
ctl.Text = Convert.ToString(this.Value);
ctl.SelectedIndexChanged += new EventHandler(OnSelectedIndexChanged);
}结果发现选择下拉列表后内容倒是提交上去了,但所有的该类型单元格的值一块变掉了。
DataGridView.EditingControl as DataGridViewBrowserFieldEditingControl;
ctl.Text = Convert.ToString(this.Value);其中DataGridViewBrowserFieldEditingControl是从ComboBox中派生出来应用于DataGridView的控件首先,要求下拉样式必须为DropDownList,结果发现选择后结果不能提交到DataGridView单元格中,如果为DropDown则没问题。为了能够使用DropDownList,我定义了一个如下的事件 private void OnSelectedIndexChanged(object sender, EventArgs e)
{
DataGridViewBrowserFieldEditingControl combo = sender as DataGridViewBrowserFieldEditingControl;
this.Value = combo.Text;
this.DataGridView.NotifyCurrentCellDirty(true);
} public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
{
base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle); DataGridViewBrowserFieldEditingControl ctl =
DataGridView.EditingControl as DataGridViewBrowserFieldEditingControl;
ctl.Text = Convert.ToString(this.Value);
ctl.SelectedIndexChanged += new EventHandler(OnSelectedIndexChanged);
}结果发现选择下拉列表后内容倒是提交上去了,但所有的该类型单元格的值一块变掉了。
解决方案 »
- 本想在override onPaint事件里重绘背景,发现onPaint事件被多次调用,为何?
- 如何用C#实现类似“\\电脑名\C$\File.txt”的远程文件操作
- 【求助】如何将c#中 tabControl 下 tabPage的 chart 图表 导入到excel表格中?
- 用Remoting之后,客户端和服务器端都要用共享类.dll,那说明客户端没有和sql语句分开吗?
- 关于图片不显示的问题,help!
- 你人能给我介绍几本C#的书吗???
- 通过WebService往MySql写入一个超长字符串时异常
- 菜鸟第二问:怎样通过表里面一个字段名下的某项内容获得同一张表里另一个字段下的内容?
- 智能感知问题
- 能否在一个object中访问到产生此object的父object?(不是指父类)
- 如何讓轉出來的excel中的表格的數據類型跟數據庫裡的一至。特別是如"123456"這種,數據庫裡是字串,但轉出來後變成數字了,在excel中還可以求和。
- 32-bit的程序如何在64-bit的系统上运行?请教!
{
DataGridViewBrowserFieldEditingControl combo = sender as DataGridViewBrowserFieldEditingControl;
this.DataGridView.CurrentCell.Value = combo.Text;
this.DataGridView.NotifyCurrentCellDirty(true);
}