定制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);
}结果发现选择下拉列表后内容倒是提交上去了,但所有的该类型单元格的值一块变掉了。