viter.alex писал(а) что К.С. Станиславский писал(а):Не верю!
Мы здесь не вопросы веры обсуждаем, а программирование, где есть только факты
Возможно я не понял что тебе надо... Ведь тебе надо по нажатию на Enter перекинуть фокус на следующий контрол? Если да, то такой вариант, пусть он и не очень эстетичен, думаю сойдет:
Наследуем класс кнопки:
- Код: Выделить всё
Public Class MyButton
Inherits System.Windows.Forms.Button
Protected Overrides Function IsInputKey(ByVal keyData As System.Windows.Forms.Keys) As Boolean
If keyData = 13 Then Return True
Return MyBase.IsInputKey(keyData)
End Function
End Class
В коде формы пишем
- Код: Выделить всё
Public Shared Function Recursive(Of T As Control)(ByVal controls As Control.ControlCollection) As IEnumerable(Of T)
Dim col As New List(Of T)
For Each c As Control In controls
Dim ct As T = TryCast(c, T)
If ct IsNot Nothing Then col.Add(ct)
For Each cc As T In Recursive(Of T)(c.Controls)
col.AddRange(cc)
Next
Next
Return col
End Function
Далее добавляем несколько кнопок на форму и ловим события:
- Код: Выделить всё
Private Sub _KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Button1.KeyDown, Button2.KeyDown, Button3.KeyDown
If e.KeyCode = Keys.Enter Then
Dim b As MyButton = DirectCast(sender, MyButton)
b = (New List(Of Control)(Recursive(Of Control)(b.Parent.Controls))).Find(Function(c As Control) c.TabIndex = b.TabIndex + 1)
If b IsNot Nothing Then b.Focus()
e.Handled = True
End If
End Sub