Отключить выделение ячеек в сетке данных
Как отключить выделение ячеек в datagridview, Выделение не должно происходить, даже если я нажимаю на ячейку.
Любые мысли, пожалуйста,
6 ответов
Единственный способ, которым я нашел выделение «отключить», — установить SelectionBackColor и SelectionForeColor в DefaultCellStyle так же, как и BackColor и ForeColor , соответственно. Возможно, вы могли бы сделать это программно в событии формы Load , но я также сделал это в дизайнере.
Что-то вроде этого:
Ключ ForeColor/BackColor не работал у меня, потому что у меня были ячейки разных цветов. Поэтому для тех, кто находится в одном и том же месте, я нашел решение, более похожее на фактическое отключение этой возможности.
Задайте событие SelectionChanged для вызова метода, который запускает ClearSelection
Был ли быстрый поиск в Интернете, чтобы узнать, как сделать выбор datagridview неизменным и получить эту (веб-страницу).
Вызов ClearSelection на SelectionChanged может и вызывает двойное срабатывание события SelectionChanged, как минимум.
Первое событие — это когда выбрана ячейка/строка и, конечно, вызывается событие SelectionChanged. Вторая стрельба — это когда ClearSelection вызывается по мере того, как он вызывает (и логически так!) Выбор datagridview для (снова) изменен (без выбора), тем самым загоняя SelectionChanged.
Если у вас больше кода, чем просто очистка ClearSelection, как таковая, я хочу, чтобы вы подавили это событие, пока ваш код не будет выполнен. Вот пример:
Самый быстрый способ сделать это для обработки ячеек с разными цветами, не требуя повторения каких-либо событий, — это сделать что-то вроде этого: Дел >
Вам нужно будет поставить итератор, если вы разрешите несколько выборов Дел >
на самом деле, это необходимо сделать в момент сбора данных. он, похоже, не работает в измененном методе выбора. Поэтому, после заполнения данных в таблице, вам необходимо выполнить итерацию по ячейкам и изменить выбранный фон в соответствии с их нормальным фоном. Что-то вроде этого (синтаксис может быть немного выключен, я конвертирую его из своего кода vb):
Отключить выделение ячеек в datagridview
Как отключить подсветку ячеек в datagridview, выделение не должно происходить, даже если я нажму на ячейку.
Любые мысли, пожалуйста
10 ответы
Единственный найденный мной способ «отключить» подсветку — установить SelectionBackColor SelectionForeColor в DefaultCellStyle так же, как BackColor и ForeColor , соответственно. Вероятно, вы могли бы сделать это программно в форме Load событие, но я также сделал это в конструкторе.
Что-то вроде этого:
Это не работает, если некоторые ячейки имеют другой цвет, чем фоновый цвет по умолчанию. — Йовица
Если вы перебираете строки, устанавливая цвета, вы также можете установить цвета выбора в том же цикле. Тогда это работает просто отлично. В более общем случае вы можете установить цвета выбора в любое время, когда вы устанавливаете обычные цвета. — clweeks
Мне действительно не нравится, что я должен использовать это, но это работает хорошо 🙂 — Джесс
Кладж ForeColor/BackColor у меня не работал, потому что у меня были ячейки разных цветов. Так что для тех, кто находится в том же месте, я нашел решение, более похожее на фактическое отключение способности.
Установить SelectionChanged событие для вызова метода, который запускается ClearSelection
Требуются небольшие модификации для vb.net, но это работает хорошо. Спасибо. Я не понимаю, почему нет простого свойства для включения или выключения элемента управления. — Ли Четвинд
Я ожидаю, что «ClearSelection()» снова вызовет событие «SelectionChanged». . но это не так. Странный. — болото
Сделал быстрый веб-поиск, чтобы узнать, как сделать выбор datagridview невыбираемым, и получил этот (веб-страницу).
Вызов ClearSelection для SelectionChanged может вызвать и действительно вызывает двойное срабатывание события SelectionChanged, как минимум.
Первое событие — это когда выбрана ячейка/строка, и, конечно же, запускается событие SelectionChanged. Второе срабатывание происходит, когда вызывается ClearSelection, поскольку он вызывает (и логично!) выбор представления сетки данных (снова) изменяется (отсутствует выбор), таким образом запуская SelectionChanged.
Если у вас есть больше кода, чем просто ClearSelection, как у меня, вы захотите подавить это событие до тех пор, пока ваш код не будет выполнен. Вот пример:
ответ дан 21 дек ’11, 14:12
Самый быстрый способ сделать это для обработки ячеек с разными цветами без необходимости повторного запуска каких-либо событий — сделать что-то вроде этого:
Вам нужно будет ввести итератор, если вы разрешаете множественный выбор
на самом деле это нужно делать вовремя для заполнения данных. похоже, он не работает в методе изменения выбора. Таким образом, после заполнения данных в таблице вам нужно пройтись по ячейкам и изменить их выбранный фон, чтобы он соответствовал их обычному фону. Что-то вроде этого (синтаксис может немного отличаться, я конвертирую его из своего кода vb):
Как убрать выделение в первой ячейке DataGridView?
В комментариях многие спрашивают: как убрать выделение в первой ячейке ? Этот вопрос очень часто повторяется, поэтому я решил написать небольшую заметку, в которой хочу показать два простых способа решения данной задачи.

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

На этом всё, если есть какие-то вопросы, то оставляйте их в комментариях.
Disable Cell Highlighting in a datagridview
How to disable Cell Highlighting in a datagridview, Highlighting should not happen even if I click on the cell.
Any thoughts please
10 Answers 10
The ForeColor/BackColor kludge wasn’t working for me, because I had cells of different colors. So for anyone in the same spot, I found a solution more akin to actually disabling the ability.
Set the SelectionChanged event to call a method that runs ClearSelection
![]()
The only way I’ve found to «disable» highlighting is to set the SelectionBackColor and the SelectionForeColor in the DefaultCellStyle to the same as the BackColor and ForeColor , respectively. You could probably do this programmatically on the form’s Load event, but I’ve also done it in the designer.
Something like this:
Did a quick websearch to find out how to make a datagridview selection non-selectable & got this (web page) hit.
Calling ClearSelection on SelectionChanged can and does cause a double firing of the SelectionChanged event, at minimum.
The first event is when the cell/row is selected and, of course, the SelectionChanged event is fired. The second firing is when ClearSelection is called as it causes (and logically so!) the selection of the datagridview to (again) changed (to no selection), thus firing SelectionChanged.
If you have more code than simply ClearSelection going on, as such I do, you’ll want to suppress this event until after your code is done. Here’s an example: