vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Focus 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Foucs setzten 
Autor: dj.tommy
Datum: 29.08.14 12:02

Hallo ErfinderDesRades!
Leider nicht
das hat nix geholfen.
Mfg DjTommy
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Foucs setzten 
Autor: Kuno60
Datum: 30.08.14 21:38

Oh, sorry, hatte nicht alles gelesen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel