Задать вопрос
gloomkolomna
@gloomkolomna
c#, WPF

Как упростить работу с datagridview?

Здравствуйте.
У меня есть, допустим, 10 объектов DGV. Для каждого из этого объекта используется событие CellValueChanged, где применяется однотипная процедура, в которой разное только имена объектов DGV.
Вот, что примерно выходит:
private void dgv_cat_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            NewLineAndUpdate_DB(dgv_cat, " ;cat_name;", "tbl_spr_category");
        }

private void dgv_otdel_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            NewLineAndUpdate_DB(dgv_otdel, " ;dep_name;", "tbl_spr_department");
        }
...

и так 10 раз.
Далее использую событие KeyDown и CellEnter, что аналогично по 10 раз пишется...

Можно ли как-то упростить?
  • Вопрос задан
  • 2829 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Разработчик игр на Unity
    18 месяцев
    Далее
  • Stepik
    Программирование на C# 5.0
    1 неделя
    Далее
  • Ulearn.me
    Проектирование на языке C#
    1 неделя
    Далее
Решения вопроса 1
newross
@newross
Product owner
В данном случае можно сделать метод обертку:
public static void SubscribeToCellValueChanged(this DataGridView dataGridView, string p1, string p2) 
        {
            dataGridView.CellValueChanged += (sender,e) => NewLineAndUpdate_DB((DataGridView)sender, p1, p2);
        }

Затем в методе инициализации контролов с помощью этой обертки подписать каждый DataGridView:
dgv_otdel.SubscribeToCellValueChanged(" ;dep_name;", "tbl_spr_department");


Но я бы порекомендовал автору пересмотреть текущую реализацию, т.к. использование магических строк приведет к поломке кода при дальнейших изменениях схемы бд.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы