Изменение типа ячейки в DGV с ComboBox на TextBox работает только для строки 0? - PullRequest
0 голосов
/ 30 июля 2010

Я изо всех сил пытался заставить свой 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 ().

Спасибо!

РЕДАКТИРОВАТЬ:

Когда я вызываю код для замены объекта ячейки, вне обработчика событий - это работает!Это указывает на то, что стоит попробовать делегата ...

РЕДАКТИРОВАТЬ:

Проблема решена Оказывается, если я уберу фокус сДГВ при замене работает!Просто на мгновение установив фокус на кнопку, и снова сделайте свое дело!

1 Ответ

0 голосов
/ 30 июля 2010

По какой-то причине DGV не позволяет мне менять тип ячейки, когда она имеет фокус. Отмена выбора ячейки недостаточна - фокус должен быть удален из элемента управления.

Это похоже на ошибку .NET! ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...