我整天都在努力让我的DataGridView表现得很好。当用户选择条目
时,我正在使用以下代码将ComboBox单元格更改为TextBox它对第0行起作用,但对于所有其他行,ComboBox仍保留在屏幕上,即使调试说它是TextBox单元格! (检查CurrentCell)。
有人有线索吗?
这是一个片段:
void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
DataGridViewComboBoxEditingControl cb = sender as DataGridViewComboBoxEditingControl;
if (cb.SelectedIndex == 0 && dataGridViewReceivers.CurrentCell is DataGridViewComboBoxCell)
{
cb.SelectedIndexChanged -= new EventHandler(comboBox_SelectedIndexChanged);
dataGridViewReceivers.CellLeave -= new DataGridViewCellEventHandler(dataGridViewReceivers_CellLeave);
dataGridViewReceivers.EndEdit();
// Change to editing mode
int row = dataGridViewReceivers.CurrentCell.RowIndex;
dataGridViewReceivers[0, row] = new DataGridViewTextBoxCell();
dataGridViewReceivers[0, row].Value = "";
dataGridViewReceivers.BeginEdit(false);
dataGridViewReceivers.RefreshEdit();
dataGridViewReceivers.CellLeave += new DataGridViewCellEventHandler(dataGridViewReceivers_CellLeave);
cb.SelectedIndexChanged += new EventHandler(comboBox_SelectedIndexChanged);
}
}
使用BindingSource.AddNew()添加新行。
谢谢!
修改
当我调用代码替换单元对象时,在事件处理程序之外 - 它可以工作!这表明值得尝试代表...
修改
问题已解决 事实证明,如果我在更换过程中从DGV移除焦点,它就可以了!只需将焦点暂时设置为一个按钮,然后再返回就可以了![/ p>
答案 0 :(得分:0)
出于某种原因,DGV不允许我在焦点时更改细胞类型。取消选择单元格是不够的 - 需要从控件中移除焦点。
这看起来像一个.NET错误!...