Ссылка на объект не указывает на экземпляр объекта при сбросе combobox [дубликат]

113
28 декабря 2020, 07:00
На этот вопрос уже даны ответы здесь:
Что такое NullReferenceException, и как мне исправить код? (2 ответа)
Закрыт 1 год назад.

Есть код, который выводит строки в datagridview при выборе индекса из combobox. Но при сбросе через comboBox1.SelectedItem = null выдает ошибку. Почему выдает - понятно, а вот как решать - нет.

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{       
    dataGridView1.CurrentCell = null;
    dataGridView1.Rows[i].Visible = false;
    for (int c = 0; c < dataGridView1.Columns.Count; c++)
    {
         if(dataGridView1[c, i+1].RowIndex.ToString() == comboBox1.SelectedItem.ToString())
         {
            dataGridView1.Rows[i].Visible = true;
            break;
         }
    }
}
Answer 1

Ну что значит как решать... Самой первой строкой ещё до приведённого кода поставьте проверку на null, вам же оба эти цикла не нужны вообще, если ничего не выбрано, верно?

if(comboBox1.SelectedItem == null)
    return;

Менее правильный вариант - заменить проверку (в c# 6.0 и выше) используя null propagation:

if(dataGridView1[c, i+1].RowIndex.ToString() == comboBox1.SelectedItem?.ToString())

(И что-то я не пойму: у вас же и RowIndex и SelectedItem - это наверняка и то и то int, зачем приводить к строкам?)

Проверка на 0 помогла c ошибкой, но после сброса таблица остается как после фильтрации, а не возвращается к полному списку.

Очень похоже, что вы хотите такую логику:

if(comboBox1.SelectedItem == null || dataGridView1[c, i+1].RowIndex.ToString() == comboBox1.SelectedItem.ToString())

Но также никто не мешает вам определить свою кастомную логику перед выходом:

if(comboBox1.SelectedItem == null)
{
    // TODO: Добавить обработку случая, когда нет выделения
    ...
    return;
}
READ ALSO
Переход к заданной позиции в файле

Переход к заданной позиции в файле

Мне нужно считывать символы с указанной позиции(lastIndexChangedSymbol), что бы вернуться в начало предложения, тк

138
Ошибка при запуске проекта avalonia.mvvm .net core

Ошибка при запуске проекта avalonia.mvvm .net core

Создаю проект по шаблону avaloniamvvm (Avalonia UI) на

112
Unity - Повернуть объект [закрыт]

Unity - Повернуть объект [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

125