2013-06-14 3 views
1

Я хочу проверить, имеет ли конкретная ячейка datagridview определенное значение. Поэтому я сделал двойной цикл «для» для проверки столбцов и строк. И возникает исключение NullReferenceException при проверке использования «if». Может кто-нибудь, пожалуйста, помогите мне? Более того, если я поставлю «try & catch», эти ячейки выбраны и окрашены (я хочу, чтобы они были окрашены). Я не понимаю.Ошибка DataGridView - исключение NullReferenceException?

Вот код:

for (int column = 0; column < 7; column++) 
{ 
    for (int row = 0; row < 6; row++) 
     { 

    if (dataGridView1.Rows[row].Cells[column].Value.ToString() == data.Day.ToString())// EXCEPTION 
     { 
     dataGridView1[column, row].Style.BackColor = Color.LightGreen; 
     } 
    } 
} 
+0

Почти все случаи 'NullReferenceException' одинаковы. См. «[Что такое исключение NullReferenceException в .NET?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net)» для некоторых советов. –

ответ

2
dataGridView1.Rows[row].Cells[column].Value.ToString() 

data.Day.ToString())// EXCEPTION 

один из этих полей имеют нулевое значение, вероятно, пустую ячейку при попытке преобразовать в натянуть nullreferenceexeption выброшено проверке

, если значения не null до преобразования в строку и сравнения

+0

Спасибо, ты прав. Прекрасно работает! :) –

0

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

Вы получите исключение NullReferenceException в любое время при попытке вызвать метод или получить доступ к члену объекта, для которого установлено значение null.

+0

Это правда, спасибо. Я решил это. –

0

Вы можете сделать это также

YourGridData(DataGridView grid) 
{ 
    int numCells = grid.SelectedCells.Count; 

     foreach (DataGridViewCell cell in grid.SelectedCells) 
     { 
      if (cell.Value != null) 
       //Do Something 
      else 
       //try or catch null here  
     } 
} 
Смежные вопросы