Могу ли я запретить пользователям выбирать строку в DGV - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть программа winform, где у меня есть два вида данных. Они доступны только для чтения, поэтому пользователь не может редактировать значения, и для него выбран режим выбора «вся строка».

Моя программа запускает dgv по одному шагу за раз, выделяя текущую строку, над которой она работает. По этой причине я не хочу, чтобы пользователь мог щелкнуть строку и выбрать ее. Есть ли настройка, к которой я могу переключиться, чтобы это для меня?

Или мне нужно испачкать руки обработчиком событий SelectionChanged, который проверяет, как выбор был изменен, и восстанавливать его, если пользователь изменил выбор? Если это так, то как мой обработчик событий SelectionChanged может определить, был ли выбор изменен программно или пользователем?

Ответы [ 3 ]

3 голосов
/ 15 апреля 2011

Если вы хотите запретить пользователю выбирать любые строки, вам следует установить для свойства элемента управления Enabled значение false.Это не позволит ему принимать события мыши.(Вы можете поиграть с управляющими цветами, чтобы заставить его «выглядеть» включенным, даже если он отключен.)

Если вы хотите выборочно запретить пользователям выбирать определенные строки, но разрешить им выбирать другие строки, то вынужно создать подкласс DataGridView и переопределить некоторые вещи.(Я не думаю, что есть какое-либо событие DGV, которое позволяет вам предотвратить изменение строки; SelectionChanged происходит после выбор изменился, и RowEnter не может быть отменен.)

Существует виртуальныйметод с именем SetSelectedRowCore в DGV, который выполняет работу по фактическому обновлению выбранного состояния данной строки.Если вы переопределите этот метод, вы можете выбрать, вызывать или не вызывать базовый SetSelectedRowCore (), чтобы разрешить / запретить выбор.

2 голосов
/ 15 апреля 2011

Вы можете установить для свойства Enabled DGV значение false.

Это дает желаемый эффект, и DGV не имеет такого «серого» вида, когда оно не включено.Вы также сможете программно установить выбранную строку DGV.

0 голосов
/ 15 апреля 2011

Существует свойство под названием "CanSelect" ..

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.canselect.aspx

Вроде бы полезно ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...