| |
VB.NET - FortgeschritteneFocus setzten | | | Autor: dj.tommy | Datum: 29.08.14 09:11 |
| Hallo Leute!
Da ich ein Eigenbau Kalender in meinem Projekt eingebaut habe, musste ich feststellen, das ich mit TapStop-Eigenschaften nicht per Tasten navigieren kann, warm möchte ich jetzt nicht näher eingehen, weil nicht das Problem ist
Daher beschloss ich das ich jedes Steuerelement per Code mittels Focus navigiere.
Und da habe ich ein Problem mit Radiobutton
ich habe für das Beispiel 1 RadioButton und 1 Button
Der Code:
Private Sub RadioButton_PreviewKeyDown(ByVal sender As Object, ByVal e As _
PreviewKeyDownEventArgs) Handles RadioButton.PreviewKeyDown
If e.Shift = True And e.KeyCode = 9 Then
'Für zurück
ElseIf e.KeyCode = 9 Then
'Für nach Vorne
Button.Focus()
End If
End Sub nun der Code Button.Focus() wird ausgeführt, aber der RadioButton besitzt weiter hin den Focus, und der Button nicht.
Kann mir einer bitte bei diesem Problem helfen?
Mfg Thomas | |
Re: Foucs setzten | | | Autor: ErfinderDesRades | Datum: 29.08.14 10:42 |
| ich denke, der Focus kann nicht versetzt werden, oder flutscht gleich wieder zurück, weil nach dem PreviewKeydown geht ja iwann auch noch das KeyUp an den Radiobutton, und dann hatter den Focus zurück.
Also versuch das Umfocussieren ins KeyUp zu verlagern - vlt. klappts ja.
Annere Möglichkeit ist, mittels Application.Idle-Event ein Delay zu erzeugen, eine kleine Verzögerung, bis alle Win-Messages abgearbeitet sind.
Aber das Event auch immer wieder abbestellen, denn das wird sehr oft gefeuert, und wenn das immer Code ausführt, belastet das die Performance.
Oder - jetzt was wirklich böses - machma vor ein Application.DoEvents: Application.DoEvents
Dim success = Button.Focus Ich glaub zwar nicht dasses hilft, und DoEvents ist auch als deprecated qualifiziert, aber täte mich grad interessieren, ob das vorgezogene Durchlaufen lassen der Events das Versetzen des Focus dann ermöglichen würde.
(Rechtschreibfehler urheberrechtlich geschützt) | |
Re: Foucs setzten | | | Autor: dj.tommy | Datum: 29.08.14 12:02 |
| Hallo ErfinderDesRades!
Leider nicht
das hat nix geholfen.
Mfg DjTommy | |
Re: Foucs setzten | | | Autor: ErfinderDesRades | Datum: 29.08.14 12:11 |
| ok, aber da waren ja noch 2 weitere Vorschläge
(Rechtschreibfehler urheberrechtlich geschützt) | |
Re: Foucs setzten | | | Autor: dj.tommy | Datum: 29.08.14 13:40 |
| LOL ich habe wohl auch einen Fehler, denn hab die helfte über lesen.
also jetzt funktioniert es er hat es zurück geworfen auf KeyUp und dort habe ich die selbe funktion geschrieben und jetzt funktioniert es
Danke dir vielmals
Mfg DjTommy | |
Re: Foucs setzten | | | Autor: dj.tommy | Datum: 29.08.14 15:46 |
| Zufrüh gefreut
es funktioniert doch nicht.
ich wollte von TextBox1 bis Button1 nach einander hin navigieren und wieder zurück.
So sieht der Code aus:
Public Class Form1
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles _
TextBox1.KeyDown
If e.Shift = True And e.KeyCode = 9 Then
Button1.Focus()
ElseIf e.KeyCode = 9 Then
TextBox2.Focus()
End If
End Sub
Private Sub TextBox2_KeyDown(sender As Object, e As KeyEventArgs) Handles _
TextBox2.KeyDown
If e.Shift = True And e.KeyCode = 9 Then
TextBox1.Focus()
ElseIf e.KeyCode = 9 Then
RadioButton1.Focus()
End If
End Sub
Private Sub RadioButton1_KeyDown(sender As Object, e As KeyEventArgs) _
Handles RadioButton1.KeyDown
If e.Shift = True And e.KeyCode = 9 Then
TextBox2.Focus()
ElseIf e.KeyCode = 9 Then
RadioButton2.Focus()
End If
End Sub
Private Sub RadioButton2_KeyDown(sender As Object, e As KeyEventArgs) _
Handles RadioButton2.KeyDown
If e.Shift = True And e.KeyCode = 9 Then
RadioButton1.Focus()
ElseIf e.KeyCode = 9 Then
Button1.Focus()
End If
End Sub
Private Sub Button1_KeyDown(sender As Object, e As KeyEventArgs) Handles _
Button1.KeyDown
If e.Shift = True And e.KeyCode = 9 Then
RadioButton2.Focus()
ElseIf e.KeyCode = 9 Then
TextBox1.Focus()
End If
End Sub
Private Sub RadioButton2_PreviewKeyDown(sender As Object, e As _
PreviewKeyDownEventArgs) Handles RadioButton2.PreviewKeyDown
If e.Shift = True And e.KeyCode = 9 Then
RadioButton1.Focus()
ElseIf e.KeyCode = 9 Then
Button1.Focus()
End If
End Sub
Private Sub RadioButton1_PreviewKeyDown(sender As Object, e As _
PreviewKeyDownEventArgs) Handles RadioButton1.PreviewKeyDown
If e.Shift = True And e.KeyCode = 9 Then
RadioButton2.Focus()
ElseIf e.KeyCode = 9 Then
TextBox1.Focus()
End If
End Sub
End Class Ich möchte es noch mal erwähnen, dass ich den TapStop-Eingenschft kenne, aber in mein Projekt nicht anwenden kann, weil ich einen Kalender in eigenbau habe und auch dort navigeren möchte.
PS: nur zu infomation Kalender wird unter Lauzeit erstellt.
Danke im Vorraus | |
Re: Foucs setzten | | | Autor: ErfinderDesRades | Datum: 29.08.14 16:03 |
| und mit KeyUp hatte es zwischenzeitlich funktioniert?
tja, warum verwendest du nun KeyDowns?
(Rechtschreibfehler urheberrechtlich geschützt) | |
Re: Foucs setzten | | | Autor: dj.tommy | Datum: 29.08.14 16:27 |
| Gut aufgepasst
aber auch das hat nix gebracht
hier der richtige Code
bitte teste es selber wenn du lust hast.
Public Class Form1
Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles _
TextBox1.KeyUp
If e.Shift = True And e.KeyCode = 9 Then
Button1.Focus()
ElseIf e.KeyCode = 9 Then
TextBox2.Focus()
End If
End Sub
Private Sub TextBox2_KeyUp(sender As Object, e As KeyEventArgs) Handles _
TextBox2.KeyUp
If e.Shift = True And e.KeyCode = 9 Then
TextBox1.Focus()
ElseIf e.KeyCode = 9 Then
RadioButton1.Focus()
End If
End Sub
Private Sub RadioButton1_KeyUp(sender As Object, e As KeyEventArgs) Handles _
RadioButton1.KeyUp
If e.Shift = True And e.KeyCode = 9 Then
TextBox2.Focus()
ElseIf e.KeyCode = 9 Then
RadioButton2.Focus()
End If
End Sub
Private Sub RadioButton2_KeyUp(sender As Object, e As KeyEventArgs) Handles _
RadioButton2.KeyUp
If e.Shift = True And e.KeyCode = 9 Then
RadioButton1.Focus()
ElseIf e.KeyCode = 9 Then
Button1.Focus()
End If
End Sub
Private Sub Button1_KeyUp(sender As Object, e As KeyEventArgs) Handles _
Button1.KeyUp
If e.Shift = True And e.KeyCode = 9 Then
RadioButton2.Focus()
ElseIf e.KeyCode = 9 Then
TextBox1.Focus()
End If
End Sub
Private Sub RadioButton2_PreviewKeyDown(sender As Object, e As _
PreviewKeyDownEventArgs) Handles RadioButton2.PreviewKeyDown
If e.Shift = True And e.KeyCode = 9 Then
RadioButton1.Focus()
ElseIf e.KeyCode = 9 Then
Button1.Focus()
End If
End Sub
Private Sub RadioButton1_PreviewKeyDown(sender As Object, e As _
PreviewKeyDownEventArgs) Handles RadioButton1.PreviewKeyDown
If e.Shift = True And e.KeyCode = 9 Then
RadioButton2.Focus()
ElseIf e.KeyCode = 9 Then
TextBox1.Focus()
End If
End Sub
End Class Die Reinfolge soll so sein
Textbox1>Textbox2>RadioButton1>RadioButton2>Button und das zurück
Mfg DjTommy | |
Re: Foucs setzten | | | Autor: Kuno60 | Datum: 29.08.14 18:08 |
| Hallo,
warum willst du das per Code machen?
Die Steuerelemente haben die Eigenschaft "TabIndex". Diese bestimmt die Reihenfolge der Aktivierung durch die Tab-Taste. Und mit Shift+Tab wird zurück gesprungen.
Am leichtesten geht dies, wenn du im Formdesigner "Aktivierreihenfolge" einschaltest und die Steuerelemente in der richtigen Reihenfolge anklickst.
Steuerelemente die nicht angesprungen werden sollen, kannst du mit "TabStop = False" ausschließen.
| |
Re: Foucs setzten | | | Autor: dj.tommy | Datum: 29.08.14 22:11 |
| Hallo Kuno60!
Ich habe es bei anderen beitrag erwänt.
Das ich es nicht anwenden kann weil ich ein eigenbau eines kalender habe.
Mfg DjTommy | |
Re: Foucs setzten | | | Autor: Kuno60 | Datum: 30.08.14 21:38 |
| Oh, sorry, hatte nicht alles gelesen. | |
Re: Foucs setzten | | | Autor: minimalist | Datum: 31.08.14 07:56 |
| Das kannst du wahrscheinlich nur über die controls collection erreichen. Hier ist eine reference zu finden: http://support.microsoft.com/kb/822493/de | |
Re: Foucs setzten | | | Autor: dj.tommy | Datum: 31.08.14 19:07 |
| Hallo minimalist!
Danke werde mir das Ansehen, wenn nicht muss ich mir eine ganz andere ausdenken.
Mfg DjTommy | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere Infos
|