Удаление фокуса со всех объектов в Visual Basic 6 - PullRequest
2 голосов
/ 22 февраля 2011

Существует ли способ, при котором пользователь может щелкнуть саму форму, и при этом убрать фокус с любого объекта (текстовое поле, поле со списком и т. Д.), Который в данный момент имеется?По сути, можно ли равномерно удалить фокус со всего сразу?

Установка фокуса на саму форму не работает.

Я думал о том, чтобы сделать старую "спрятать кнопку-заполнитель за другим объектом".уловка, но я действительно не фанат этого.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 23 февраля 2011

В VB6 PictureBox может получить фокус, даже если он не содержит элементов управления.

В вашем случае вы можете установить PictureBox с TabStop false, BorderStyle, установленным в 0, TabIndex установите 0 за каждым другим элементом управления, но не содержащим никакого фокусируемого элемента управления, и растяните его до ScaleWidth на ScaleHeight во время выполнения.

Вы должны поместить метки и любой элемент управления без окон вэтот фон PictureBox тоже.

Таким образом, когда пользователь нажимает «на форме», фокус «уходит».При «без фокуса» клавиша Tab фокусирует первый элемент управления (тот, для которого TabIndex установлен в 1).

1 голос
/ 23 февраля 2011

Когда форма активна, что-то обычно ДОЛЖНО иметь фокус. Похоже, вы просто не хотите «показывать», что у определенного элемента управления есть фокус.

Если это так, это будет зависеть от элементов управления. У некоторых есть свойства, которые управляют тем, указывает ли конкретный элемент управления свой фокус каким-либо образом.

Но встроенные элементы управления Windows всегда будут показывать их состояние фокуса, если вы не сделаете их подклассами

Учитывая эту проблему. Я бы, вероятно, поместил кнопку в форму, а затем переместил бы ее за экран при загрузке формы. Убедитесь, что это не табуляция, но затем, когда вы хотите скрыть фокус, установите фокус конкретно на кнопку, убедитесь, что кнопка STILL в порядке табуляции, даже если это не табуляция, поэтому пользователь может нажимать табуляцию, пока на кнопку и в конечном итоге где-то логично.

0 голосов
/ 23 февраля 2011

Нет VB под рукой, но не могли бы вы просто удалить TabStop?

for x = 1 to me.Controls.count
    me.Controls(x).TabStop = 0
next
...