Nesneler arasında Yön tuşlarıyla Geçiş

1 2
09/07/2014, 11:06

tetikçi_61

Merhaba arkadaşlar bu sefer yapmaya çalıştığım şey form üzerinde çok sayıda bulunan textbox, 4 adet bulunan combobox ve 1 adette datetimepicker arasında yön tuşlarıyla geçiş yapmak. Nette araştırdım fakat tam anlamıyla net bir bilgi yoktu. Nasıl yapabileceğim konusunda fikri olan ?
09/07/2014, 12:43

alpeki99

1- Form özelliklerinden KeyPreview'i True olarak ayarlaryın.
2- Form olaylarından KeyDowm'a çift tıklayın.

Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
If (e.KeyCode = Keys.Right) Then
SendKeys.Send("{TAB}")
End If
End Sub

KeyDown olayında benim Sağ tuş için yazdığım kod bu şekilde.
09/07/2014, 13:39

tetikçi_61

üstadım sağolasın fakat bunda normal olarak tab'a bastığın zamanki gibi davranıyor. Direk olarak hangi ok'a bastıysan o yönde imleci hareket ettirme gibi bir imkanımız yokmudur?
09/07/2014, 14:09

alpeki99

Alıntı:hangi ok'a bastıysan o yönde imleci hareket ettirme

derken mesela aktif bulunduğu kontrolün sağındaki ilk kontrole geçmesinimi istiyorsunuz?
09/07/2014, 15:18

tetikçi_61

sağındaki, solundaki aşağıdaki veya yukarıdakilere de geçecek şekilde. {UP},{DOWN},...vs. eklemeleri varmış denedim fakat olmadı.
09/07/2014, 23:47

alpeki99

İstediğiniz şey yukarıda yazdığım basit mantık ile olmaz. Siz daha ileri seviye bir istekte bulunuyorsunuz. Bence çok gerek yok gibi çünkü bunu ayarlamak çok zor. Eğer form üzerindeki kontroller belirli bir düzene sahip ise ekteki çözüm işe yarayabilir ancak diğer türlü çözüm zor.


Public Sub TabIndexeGit(ByVal i As Integer)
For Each ctl As Control In Me.Controls
If ctl.TabIndex = i Then
ctl.Focus()
End If
Next
End Sub

Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown

If (e.KeyCode = Keys.Down) Then

If (ActiveControl.TabIndex = 11) Then
TabIndexeGit(0)
Else
TabIndexeGit(ActiveControl.TabIndex + 1)
End If

End If

If (e.KeyCode = Keys.Up) Then

If (ActiveControl.TabIndex = 0) Then
TabIndexeGit(11)
Else
TabIndexeGit(ActiveControl.TabIndex - 1)
End If

End If

If (e.KeyCode = Keys.Right) Then

TabIndexeGit(ActiveControl.TabIndex + 4)

End If

If (e.KeyCode = Keys.Left) Then

TabIndexeGit(ActiveControl.TabIndex - 4)

End If

End Sub
1 2