динамическая ссылка на DataGridView в аргументах события ячейки - PullRequest
0 голосов
/ 31 августа 2018

Итак, у меня есть приложение для форм с 4 DataGrids, и у меня есть событие rowleave, которое срабатывает при изменении ячейки, чтобы заменить backcolor до тех пор, пока изменения не будут сохранены в БД. Я пытаюсь написать так, чтобы все 4 сетки могли использовать одни и те же события вместо того, чтобы записывать одно и то же событие 4 раза с разными именами сетки. Событие изменения ячейки прекрасно работает во всех сетках, но событие выхода из строки - нет. Вот что у меня есть:

private void gridNewBusinessPotential_RowLeave(object sender, DataGridViewCellEventArgs e)
{
    var gridList = new List<DataGridView>();

    DataGridView[] grids = {gridBusinessAgentSuppression,
        gridBusinessFollowUpSuppressionData,
        gridFollowUpDescription,
        gridNewBusinessPotential};

    gridList.AddRange(grids);

    var focusedGrid = from dg in gridList
                      where Focused == true
                      select dg;

    focusedGrid.FirstOrDefault().Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Bisque;
}

Я получаю сообщение об ошибке во время выполнения, в котором говорится, что focusedGrid не установлен для экземпляра объекта. Если кто-нибудь знает лучший способ добиться этого, пожалуйста, сообщите мне. В противном случае, любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 31 августа 2018

Объект sender сообщает вам, над какой сеткой вы работаете (в том числе сфокусированной), так почему бы не поработать с этим?

private void gridNewBusinessPotential_RowLeave(object sender, DataGridViewCellEventArgs e)
{
    (sender as DataGridView)?.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Bisque;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...