Убрать выделение активной ячейки в DataGridView
Возникла небольшая проблема. На форме есть dataGridView, у которого при запуске программы всегда становится активной левая верхняя ячейка. Нужно, чтобы при нажатии левой кнопкой мыши на этот компонент ячейка перестала быть активной. Пробовал сделать обработчик события Click
но результата никакого нет, по прежнему выделяется ячейка, по которой был произведен клик, только если отпустить мышь, она продолжает быть активной, что, в принципе, логично.
Можно ли как-то обойти это и сделать так, чтобы при нажатии на dataGridView1 ВСЕ ячейки перестали быть активными?
Заранее благодарен за помощь
Цвет активной ячейки DataGridView
После удаления текущей строки в ентом компоненте через раз теряется цвет активной ячейки (рисунки.
Выделение и редактирование ячейки DataGridView
В общем вопрос интересный. Много лет использую этот компонент и думал, что уже все о нем знаю. Да.
Выделение ячейки с ошибкой в datagridview
Пользуюсь событием CellValidating для проверки правильности ввода значений в ячейки грида.
Выделение столбца от активной ячейки
Как выделить весь столбец до низа от активной ячейки.
Спасибо, работает
Только теперь другой вопрос стал непонятным
Я так понимаю, что SelectionChanged вызывается сразу после того, как активная ячейка была изменена, т.е. сначала CurrentCell становится равным null, а после вызывается SelectionChanged, так как активная ячейка была изменена (в данном случае убрана). Но в отладчике показывается, что CurrentCell не сразу зануляется, а только после того, как вызовется SelectionChanged. Аналогичную проверку я решил сделать со свойством Location, там все делается нормально, т.е. сначала изменяется свойство Location, а потом вызывается обработчик изменения этого Location’а
Я поставил три точки останова, по одной в начале каждой функции. Таким образом, при нажатии левой кнопки мыши вызывается CellMouseDown. Там первым шагом изменяется Location (на 10, 14). Так как Location был изменен, вызывается LocationChanged, и отладчик переходит туда, при этом Location уже равен (10,14), т.е. обработчик вызвался уже после присваивания. После того, как выполнение обработчика заканчивается, отладка возвращается в CellMouseDown и переходит ко второму оператору, где изменяется CurrentCell. Аналогично после этого, как и для Location’а, отладчик переходит на SelectionChanged, но при этом CurrentCell не равен null, т.е., в отличие от Location’а, значение не присвоилось, а осталось таким, какое было до этого. Оно присваивается только после того, как SelectionChanged завершается, т.е. в этом случае обработчик вызывается не после изменения.
Может, кто-нибудь объяснит этот парадокс? Почему для Location’а один порядок, а для CurrentCell’а другой? А то я что-то совсем не понимаю, в какой последовательности все это вызывается
Отключить выделение ячеек в представлении данных
Как отключить выделение ячеек в представлении данных Выделение не должно происходить, даже если я нажимаю на ячейку.
Любые мысли, пожалуйста
Kludge ForeColor / BackColor не работал для меня, потому что у меня были клетки разных цветов. Поэтому для любого человека в том же месте я нашел решение, более похожее на фактическое отключение способности.
Установите событие SelectionChanged , чтобы вызвать метод, который запускает ClearSelection
Единственный способ, которым я обнаружил «отключить» выделение, — это установить «SelectionBackColor» и «SelectionFore» в «DefaultCellStyle» на то же, что и «BackColor» и «ForeColor» соответственно. Вы, вероятно, могли бы сделать это программно на мероприятии формы Load , но я также сделал это в дизайнере.
Что-то вроде этого:
Провел быстрый веб-поиск, чтобы выяснить, как сделать выбор datagridview недоступным & получил этот (веб-страница) хит.
Вызов ClearSelection on SelectionChanged может и вызывает как минимум двойное срабатывание события SelectionChanged.
Первое событие — это когда ячейка / строка выбрана и, конечно, событие SelectionChanged запускается. Второе увольнение — это когда ClearSelection вызывается так, как он вызывает (и логически так!) выбор datagridview в (снова) изменился (без выбора), что привело к срабатыванию SelectionChanged.
Если у вас больше кода, чем просто происходит ClearSelection, как это я делаю, вы захотите подавить это событие до тех пор, пока ваш код не будет готов. Вот пример:
Как убрать выделение в datagridview c
Спрашивающий
Общие обсуждения
добрый вечер!столкнулся с проблемой, есть форма, на ней грид, в гриде при загрузке отрабатывает функция загрузки значений в datagridview.загружаю так:
Затем на лоад формы пишу
так как при загрузке, я анализирую значения из базы и в соответствии с этим,выделяю цветом строки,то стала не удобно восприниматься картинка грида, т.е. при загрузке данных в грид, выделяется первая строка, при установленном режиме fullrowselect.
в лоаде попробовал написать
grid1.rows[0].selected=false или grid1.clearselected(); результата нет, попробовал в обработчиках
CellPainting или RowPostPaint
выделение снимается, строка в последствии не выделяется, если сделать на событии cell_click
События были на гриде, но я их закоментил, результат тот же.
может влияет следующий фактор, хотя врятли:
данная форма, в которой распложен грид, это редактируемая форма некоторого объекта, который открывается двойным щелчком,т.е. есть список обектов, нарисовано событие double_click, при двойном щелчке, открывается форма редактирования, где и расположен наш интересующий грид, с фнкцией отображения show_f();
Отключить выделение ячеек в 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):