Странная проблема с DataGridviewComboboxCell, пытаясь автоматически изменениями

StackOverflow https://stackoverflow.com/questions/4400679

Вопрос

Итак, моя цель - однажды пользователь нажимает на элемент из выпадающего списка, ячейка автоматически вызовет в EndedIt (). Самая странная вещь состоит в том, что код ниже будет работать на 2-т-н ComboboxeScells, которые я выпадаю, и выбираю значения, но никогда не первого. Есть ли что-то, что я скучаю здесь ??

        protected override void OnCellClick(DataGridViewCellEventArgs e)
        {
            base.OnCellClick(e);

            DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;
            if (control != null)
            {
                   control.DropDownClosed += new EventHandler(control_DropDownClosed);
            }
        }

            void control_DropDownClosed(object sender, EventArgs e)
            {
                this.EndEdit();
                DataGridViewComboBoxEditingControl control = sender as DataGridViewComboBoxEditingControl;
                control.DropDownClosed -= new EventHandler(control_DropDownClosed);
            }

Следует добавить здесь, что я наследую от DataGridView, если это не очевидно

Это было полезно?

Решение

Когда что-то вроде "Самая странная вещь состоит в том, что код ниже будет работать на двухуровневых комбинации, которые я выпадаю и выбираю значения, но никогда не первый«Бывает, это часто потому, что событие происходит до того, как то, что вам нужно.

Свидеть свой пример, я бы сказал, что первый раз, когда вы нажимаете,

DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;

дает тебе control == null.

Может быть, вы должны изменить событие, выбранное, чтобы сделать ваши вещи из Click к SelectedIndexChanged или SelectedValueChanged ?

Надеюсь это поможет,

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top