Есть код, который выводит строки в 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;
}
}
}
Ну что значит как решать... Самой первой строкой ещё до приведённого кода поставьте проверку на 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;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Мне нужно считывать символы с указанной позиции(lastIndexChangedSymbol), что бы вернуться в начало предложения, тк
Создаю проект по шаблону avaloniamvvm (Avalonia UI) на
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском