Отключить элемент в Combobox в DataGridViewComboBoxCell - PullRequest
1 голос
/ 17 июня 2019

Я хотел бы отключить элемент в ComboBox, который находится в ячейке DataGridview.

Я уже знаю, как отключить (или кажется отключенным) элементы в ComboBox, используя DrawItem событие и SelectedIndexChanged событие, но нет аналогичного события в DataGridViewComboBoxCell или DataGridViewComboBoxColumn.

Так что мой вопрос заключается в том, как отключить любой элемент в ComboBox, который находится вa DataGridView?

В ComboBox я могу изменить отображение элементов, которые необходимо отключить, следующим образом: enter image description here

Но не может выполнять те же функции в DataGridView:

enter image description here

1 Ответ

2 голосов
/ 17 июня 2019

Я думаю, что самым простым вариантом для вас будет обработать событие EditControlShowing , а затем обработать событие ComboBoxes SelectedIndexChanged и делать то, что вы уже знаете, как делать.

Когдавы устанавливаете DataGridview в коде, вы можете сделать это:

dataGridView1.EditingControlShowing += dataGridView1_EditingControlShowing;

, а затем реализовать обработчик, например:

void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    ComboBox combo = e.Control as ComboBox;

    if (combo != null)
    {
        // Both of these lines are essential, otherwise you will be handling the same event twice in some conditions
        combo.SelectedIndexChanged -= combo_SelectedIndexChanged;
        combo.SelectedIndexChanged += combo_SelectedIndexChanged;
    }
}

Наконец, событие SelectedIndexChanged обрабатывается точнотак, как вы хотите:

void combo_SelectedIndexChanged(object sender, EventArgs e)
{
    ComboBox thisCombo = sender as ComboBox;
    if (thisCombo != null)
    {
        Debug.Print(thisCombo.Text);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...