Ячейка DataGridView обрабатывает пустую редактируемую ячейку как ноль, игнорирует свойство DataGridViewCellStyle.NullValue

1

У меня есть DataGridView с 3 столбцами, два из которых доступны для редактирования.

Я получаю исключение NullRef при доступе к значению ячейки как таковой

 someObject.Property = dgv.Rows(x).Cells(y).Value.ToString()

Это было очевидно потому, что я не проверяю значение null перед использованием значения. Поэтому вместо того, чтобы просто проверять значение Nothing (которое я буду делать сейчас, никогда не боюсь), я решил изменить объект, который инициализирует DataGridView чтобы никогда не содержать null для свойства string, которое заполняет ячейку. Вместо этого я использовал String.Empty.

Я думал, что все будет хорошо и хорошо, но кажется, что, когда я редактирую ячейку и оставляю ее пустой, она рассматривает ее как нулевое значение вместо String.Empty. Я обработал CellBeginEdit, CellEndEdit и CellLeave пытаясь найти, откуда он получает это магическое нулевое значение, безрезультатно.

Я видел свойство DataGridViewCellStyle.NullValue в MSDN, которое я считал ответом, но, как оказалось, свойство NullValue умолчанию имеет значение String.Empty поэтому это не имеет большого смысла.

Очевидно, что простой ответ здесь - "просто проверить нуль, прежде чем использовать его", но почему я не могу заставить его обрабатывать пустую строку как пустую строку вместо нуля?

Теги:
datagridview

1 ответ

0

Значения ячейки datagrid - это объекты, пустая строка - null.

Вы можете преобразовать его в строку, а затем проверить на string.empty, но он не за горами, просто проверяя, нет ли этого.

dim _value as string = dgv.Rows(x).Cells(y).Value
someObject.Property = _value

или написать функцию для проверки

Public Function checkForNull(_value as object) as string

If _value is nothing then return string.empty else return _value.tostring()

End Function

....

SomeObject.Property = checkForNull(dgv.Rows(x).Cells(y).Value)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню