Как исправить ошибку «Невозможно привести объект типа Button к DataGridView» в C # - PullRequest
0 голосов
/ 26 марта 2019

Я сделал несколько динамических просмотров данных, у которых есть экземпляр выше. Dgv находятся в моей панели flowlayout, и я также создал событие CellClick для каждого вида данных.

for (int = 0; i <= 5; i++){
     dgv = new DataGridView();
     dgv.Name = "dgv" + i;
     dgv.CellClick += new DataGridViewCellEventHandler(dgv_CellClick);
}

Это событие, которое я сделал для DGV's

private void dgv_CellClick(object sender, DataGridViewCellEventArgs e){
     DataGridView dgv = (DataGridView)sender;
     for (int i = 1; i <= 5; i++){
          if (dgv.Name == ("dgv" + i.ToString())){
               dgv.Rows[0].Cells[0].BackColor = Color.Red;
          }
     }
}

Как видите, я использовал отправителя объекта для отслеживания созданных ранее dgv. А теперь я хочу реализовать событие, чтобы установить контакт с конкретным сетевым представлением и изменить его цвет с помощью различных элементов управления. Но когда я это использовал, он вылетает и выдает ошибку InvalidCastException «Невозможно привести объект типа« управление здесь »к типу« DataGridView ». Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 26 марта 2019

Для безопасного приведения я предлагаю вам включить ваш код обработчика событий в условную проверку, как показано ниже.Это, по крайней мере, позволит вам установить точку останова и проверить, какой элемент управления вызывает обработчик щелчков, чтобы вы могли внести необходимые изменения.
Хотя это не обязательно устранит вашу проблему, но, по крайней мере, поможет вам отладить систему без мгновенного сбояприложение.

private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{
     if(sender is DataGridView)
     {
        DataGridView dgv = (DataGridView)sender;
        for (int i = 1; i <= 5; i++){
          if (dgv.Name == ("dgv" + i.ToString())){
               dgv.Rows[0].Cells[0].BackColor = Color.Red;
          }
        }
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...