Вопрос

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

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

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

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

Решение

в EditingControlShowing событие DataGridView Прикрепите метод к ComboBox 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
}

Другие советы

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

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);
  }
}

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

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