Как убрать выделение в первой ячейке DataGridView?
В комментариях многие спрашивают: как убрать выделение в первой ячейке ? Этот вопрос очень часто повторяется, поэтому я решил написать небольшую заметку, в которой хочу показать два простых способа решения данной задачи.

Чтобы убрать выделение в первой ячейке Вы можете воспользоваться методом ClearSelection, например:
1. Загружаем и выводим данные.
2. Выполняем ещё какие-то действия с DataGridView.
3. dataGridView1.ClearSelection();
Второй способ, в отличие от первого, позволяет убрать выделение только конкретно в первой ячейке DataGridView, а не во всех сразу же, как это делает предыдущий способ.
dataGridView1.Rows[0].Cells[0].Selected = false;
В обоих случаях Вы получите один и тот же результат.

На этом всё, если есть какие-то вопросы, то оставляйте их в комментариях.
Data Grid View. Clear Selection Метод
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Отменяет выделение ячеек, выбранных в данный момент.
Перегрузки
Отменяет выбор всех выделенных в данный момент ячеек, за исключением одной указанной ячейки, при необходимости выделяя указанную ячейку.
Отменяет текущее выделение посредством снятия выделения всех выбранных ячеек.
ClearSelection(Int32, Int32, Boolean)
Отменяет выбор всех выделенных в данный момент ячеек, за исключением одной указанной ячейки, при необходимости выделяя указанную ячейку.
Параметры
Исключаемый индекс столбца.
Исключаемый индекс строки.
Значение true , чтобы выбрать исключенную ячейку, строку или столбец; значение false , чтобы сохранить их исходное состояние.
Исключения
columnIndexException больше наибольшего индекса столбца.
-или- columnIndexException меньше –1, если SelectionMode — FullRowSelect; в противном случае columnIndexException меньше 0.
-или- rowIndexException больше наибольшего индекса строки.
-или- rowIndexException меньше –1, если SelectionMode — FullColumnSelect; в противном случае rowIndexException меньше 0.
Комментарии
rowIndexException Значение -1 представляет заголовок столбца, а columnIndexException значение -1 представляет заголовок строки.
Этот метод полезен для очистки текущего выделенного фрагмента без отмены выделения ячейки, строки или столбца, указанного индексами исключений.
SelectionMode Если значение свойства разрешает выделение отдельных ячеек, этот метод задает Selected для свойства каждой ячейки false значение, за исключением ячейки в указанной строке и столбце. SelectionMode Если значение свойства допускает полный выбор строки или столбца, этот метод также задает Selected для свойства каждой строки или столбца false значение, за исключением строки или столбца, содержащего указанную ячейку.
Исключенная ячейка, строка или столбец могут находиться в выбранном состоянии при вызове этого метода. Этот метод выбирает его, selectExceptionElement если значение параметра равно true . В зависимости от режима выбора в результате может быть выбрана вся строка или столбец.
Отключить выделение ячеек в datagridview
Как отключить выделение ячеек в datagridview, Подсветка не должна происходить, даже если я нажму на ячейку.
какие-то мысли, пожалуйста
8 ответов
единственный способ, которым я нашел «отключить» подсветку, — установить SelectionBackColor и SelectionForeColor на DefaultCellStyle как же BackColor и ForeColor , соответственно. Вы могли бы сделать это программно на форму Load событие, но я также сделал это в конструкторе.
что-то вроде этого:
ForeColor / BackColor kludge не работал на меня, потому что у меня были клетки разных цветов. Поэтому для тех, кто находится в том же месте, я нашел решение, более похожее на фактическое отключение способности.
установить SelectionChanged событие для вызова метода, который работает ClearSelection
сделал быстрый веб-поиск, чтобы узнать, как сделать выбор datagridview не выбираемым и получил этот (веб-страница) хит.
вызов ClearSelection на SelectionChanged может и вызывает двойной запуск события SelectionChanged, как минимум.
первое событие-это когда ячейка/строка выбрана и, конечно же, событие SelectionChanged запускается. Второй запуск — это когда ClearSelection вызывается как он вызывает (и логически так!) выбор datagridview to (снова) изменен (без выбора), таким образом, запуск SelectionChanged.
Если у вас больше кода, чем просто ClearSelection, как это делаю я, вы захотите подавить это событие до тех пор, пока ваш код не будет выполнен. Вот пример:
самый быстрый способ сделать это для обработки ячеек с разными цветами, без необходимости повторять какие-либо события, было бы сделать что-то вроде этого:
Вам нужно будет ввести итератор, если вы разрешите несколько выборов
на самом деле, это нужно сделать вовремя для популяции данных. он не работает в методе on selection changed. Поэтому после заполнения данных в таблицу необходимо выполнить итерацию через ячейки и изменить их выбранный фон, чтобы соответствовать их нормальному фону. Что-то вроде этого (синтаксис может быть немного выключен, я конвертирую его из своего кода vb):