Я изо всех сил пытался заставить свой 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 ().
Спасибо!
РЕДАКТИРОВАТЬ:
Когда я вызываю код для замены объекта ячейки, вне обработчика событий - это работает!Это указывает на то, что стоит попробовать делегата ...
РЕДАКТИРОВАТЬ:
Проблема решена Оказывается, если я уберу фокус сДГВ при замене работает!Просто на мгновение установив фокус на кнопку, и снова сделайте свое дело!