Как убрать выделение в datagridview c

от admin

Отключить выделение ячеек в 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 c

Спрашивающий

Общие обсуждения

добрый вечер!столкнулся с проблемой, есть форма, на ней грид, в гриде при загрузке отрабатывает функция загрузки значений в datagridview.загружаю так:

Затем на лоад формы пишу

так как при загрузке, я анализирую значения из базы и в соответствии с этим,выделяю цветом строки,то стала не удобно восприниматься картинка грида, т.е. при загрузке данных в грид, выделяется первая строка, при установленном режиме fullrowselect.
в лоаде попробовал написать
grid1.rows[0].selected=false или grid1.clearselected(); результата нет, попробовал в обработчиках
CellPainting или RowPostPaint
выделение снимается, строка в последствии не выделяется, если сделать на событии cell_click

Читать:
Как в автокаде включить 3д моделирование

События были на гриде, но я их закоментил, результат тот же.
может влияет следующий фактор, хотя врятли:
данная форма, в которой распложен грид, это редактируемая форма некоторого объекта, который открывается двойным щелчком,т.е. есть список обектов, нарисовано событие double_click, при двойном щелчке, открывается форма редактирования, где и расположен наш интересующий грид, с фнкцией отображения show_f();

Как убрать выделение в первой ячейке DataGridView?

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

atributy-xml-fajla_13.png

Чтобы убрать выделение в первой ячейке Вы можете воспользоваться методом ClearSelection, например:

1. Загружаем и выводим данные.
2. Выполняем ещё какие-то действия с DataGridView.
3. dataGridView1.ClearSelection();

Второй способ, в отличие от первого, позволяет убрать выделение только конкретно в первой ячейке DataGridView, а не во всех сразу же, как это делает предыдущий способ.
dataGridView1.Rows[0].Cells[0].Selected = false;
В обоих случаях Вы получите один и тот же результат.

atributy-xml-fajla_2.png

На этом всё, если есть какие-то вопросы, то оставляйте их в комментариях.

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

Elle H's user avatar

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:

Похожие статьи