Как связать DataGridViewComboBoxColumn с событием OnChange (C #) - PullRequest
1 голос
/ 28 января 2011

У меня есть стандарт DataGridView, и мой последний столбец - DataGridViewComboBoxColumn.Я хотел бы добавить событие, чтобы при изменении выбранного индекса любой из строк в этом столбце происходило событие, и я сохранял эти данные в БД.

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

Любая помощь будет оценена !!!

Ответы [ 2 ]

6 голосов
/ 28 января 2011

В событии EditingControlShowing DataGridView присоедините метод к списку SelectedIndexChanged.

Например:

private void DGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
  if (DGV.CurrentCell.ColumnIndex == comboColumnIndex && e.Control is ComboBox)
  {
    ComboBox comboBox = e.Control as ComboBox;
    comboBox.SelectedIndexChanged += LastColumnComboSelectionChanged;
  }
}

Теперь в приведенном ниже методе вы можете делать все, что захотите:

private void LastColumnComboSelectionChanged(object sender, EventArgs e)
{
  // Do saving work here
}
2 голосов
/ 28 января 2011

Вы можете попробовать что-то в этих строках. Поле со списком является элементом редактирования, поэтому

private void dg_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
  if (dg.CurrentCell.ColumnIndex == [yourcolumnindex])
  {
    ComboBox cmbox = e.Control as ComboBox;
    cmbox.SelectedValueChanged -= new EventHandler(cmbox_SelectedValueChanged);
    cmbox.SelectedValueChanged += new EventHandler(cmbox_SelectedValueChanged);
  }
}

Теперь в этом случае вы можете делать свои вещи, но требуется ли, чтобы при каждом изменении индекса вы нажималибазы данных?

...