DataGridView не может быть сфокусированным, но один из них может - PullRequest
0 голосов
/ 27 мая 2011

Я столкнулся с самой странной ошибкой, связанной с DataGridViews в Windows Forms.

У меня есть TabControl, который должен содержать закрепленный DataGridView на каждой вкладке. Я подумал, что было бы удобно, чтобы сетка фокусировалась на изменении страницы вкладки, чтобы пользователь мог просто навести указатель мыши на сетку и начать прокрутку, когда он меняет страницу. Итак, я просто добавил grids[tabs.SelectedIndex].Focus() в обработчик событий для изменения вкладки.

Однако произошло нечто действительно странное. В моем тестовом приложении у меня есть три вкладки. Если я попробую прокрутить сетку сразу после запуска приложения, она не будет работать; Я должен сначала щелкнуть в сетке. Я ожидал этого. Однако, если я изменю вкладку, я не смогу прокрутить другие сетки, пока не нажму, кроме первой!

Итак, если я переключаю страницы на вторую страницу, а затем возвращаюсь на первую, я могу автоматически прокручивать эту сетку без щелчка, но если я затем переключаюсь на третью, мне нужно щелкнуть, чтобы сетка сфокусировалась.

Я посмотрел на свойства CanFocus сеток, и кажется, что только для первой сетки установлено значение True. Все они созданы программно, и все одинаково. Я не понимаю, почему они были бы разными.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Для неактивных вкладок свойство Visible имеет значение false. Документация для CanFocus гласит:

Для получения контроля фокус ввода, элемент управления должен иметь дескриптор, назначенный ему, и видимый и Enabled свойства должны быть установить значение true для элемента управления и все его родительские элементы управления

0 голосов
/ 27 мая 2011

Ну, я решил это.Глупая ошибка программирования с моей стороны, у меня было grids[tabs.TabIndex].Focus() вместо grids[tabs.SelectedIndex].Focus().

Ну хорошо.

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