Datagridview щелкнул заголовок первой ячейки исключение

#c# #visual-studio #winforms #datagridview

#c# #visual-studio #winforms #datagridview

Вопрос:

У меня большая проблема. Я столкнулся с этим при разработке приложения Windows-form. Я разместил datagridview с 4 столбцами и несколькими строками в форме. Когда я нажимаю на заголовок первого столбца, он выдает сообщение об ошибке. Я также прикрепил это. Я попытался указать условие для события «CellClick», чтобы не вызывать проблемы. К сожалению, он не решил это. Странно, потому что это явление ошибки отсутствует в дополнительных столбцах. Что бы я ни пробовал и ни изменял, я не мог устранить. Sorry для моего английского. Код обработчика события CellClick:

 private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.RowIndex == -1)
            return;
    }
  

Комментарии:

1. пожалуйста, опубликуйте сведения об исключении на английском языке, lol

2. Извините. «Тип объекта может быть только DateTime».

3. хорошо, что почти кажется, что происходит что-то еще… Ваш код выглядит нормально. Может быть, поместить точку останова в обработчике щелчка и просмотреть код? это единственный код в DellContentClick? Я полагаю, что есть также CellDoubleContentClick или что-то в этом роде — вы используете это?

4. Я попробовал этот метод, значение переменной было равно -1. К сожалению, событие CellDoubleContentClick также не было успешным. И событие DellContentClick я не нахожу.

5. ну, без дополнительной информации мы ничего не можем сделать на самом деле…

Ответ №1:

Я подозреваю, что первый столбец используется для отображения значений DateTime и что DataGridViewColumn.Свойство SortMode установлено на DataGridViewColumnSortMode.Automatic . Когда вы нажимаете на заголовок столбца, DGV пытается отсортировать столбец.

Проблема в том, что в одной или нескольких строках значение, хранящееся в ячейке [0], не является ни значением DateTime, ни null. Вот почему вы получаете сообщение об ошибке:

Система.Исключение ArgumentException: ‘Объект должен иметь тип DateTime.’

Если вы не хотите, чтобы столбец автоматически сортировался, установите для свойства SortMode значение DataGridViewColumnSortMode.NotSortable или DataGridViewColumnSortMode.Programmatic .