DataGridView Сохранить несколько строк выбранными при щелчке левой кнопкой мыши - PullRequest
2 голосов
/ 11 января 2011

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

Как настроить DataGridView, чтобы я мог выбрать несколько строк, щелкнуть левой кнопкой мыши по ячейке, и все те же строки остаются выбранными?

1 Ответ

2 голосов
/ 11 января 2011

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

  • Как / когда вы сбрасываете выбор?
  • Если щелчок левой кнопкой мыши не позволяет изменить выбор, как вы выбираете строки в первую очередь?
  • и так далее.

Более всеобъемлющей альтернативой было бы перехватывать все MouseDown / Click события в DGV и реализовывать собственное поведение выбора, хотя я не уверен, насколько это возможно даже с WinForms.

Мое скромное мнение было бы переосмыслить этот дизайн интерфейса. Будет ли это соответствовать ожиданиям пользователей? :)

Обновление: Альтернатива-альтернатива, которая только что пришла мне в голову: если это поведение по какой-то причине крайне необходимо, лучшим вариантом будет создание пользовательского элемента управления, который добавляет своего рода «Выбор Заблокировано »состояние для DataGridView. Затем пользователь может явно запросить это переопределение к поведению Windows по умолчанию (выбрав строки, а затем, например, нажав кнопку «Блокировка»). Однако создание такой вещи не было бы тривиальным.

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