Benutzer mit den meisten Antworten
Control bekommt Focus duch Maus oder Tab?

Frage
-
Hallo zusammen,
ich habe eine etwas eigenwillige Benutzerführung. (wurde so gewünscht)
Ich sollte in einem bestimmten Fall wissen ob ein Control den Focus durch die Tab-Taste bekommt oder einen Maus-Klick.
(Hauptsächlich bei einem Maus-Click, weil das irgend ein Control sein kann)Lässt sie das irgendwie feststellen, wleches Control als nächstes angeklickt wird?
Die Info brauche ich auch schon im Validating oder LostFocus Event des aktuell aktiven Controls.Vielen Dank für Info
Gruss Peter
Antworten
-
Am Wed, 15 Feb 2012 14:32:06 +0000 schrieb peter haus:
Hallo zusammen,
ich habe eine etwas eigenwillige Benutzerführung. (wurde so gewünscht)
Ich sollte in einem bestimmten Fall wissen ob ein Control den Focus durch die Tab-Taste bekommt oder einen Maus-Klick.
(Hauptsächlich bei einem Maus-Click, weil das irgend ein Control sein kann)
Lässt sie das irgendwie feststellen, wleches Control als nächstes angeklickt wird?
Die Info brauche ich auch schon im Validating oder LostFocus Event des aktuell aktiven Controls.
Vielen Dank für Info
Gruss PeterIm Zweifelsfall würde ich einfach die Mouse-Events nehmen, z. B.
MouseEnter und MouseLeave.Gruß Ahmed
Antworten bitte nur in der Newsgroup
Windows 7 64bit Home Premium
Office Prof. 2010- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 23. Februar 2012 08:43
-
Hallo,
die Events die Ahmed nennt bieten sich an. Weil sie für ein Control welches mit der Maus angeclickt wird ausgeführt werden bevor das Validating und LostFocus Event des zuvor aktiven Controls ausgeführt werden. (Im Gegensatz zu MouseDown und MouseClick.)
Z.B. für eine TextBox mit Namen TextBox3:
(Ungelöst ist die Situation wenn der Focus auf TextBox2 steht. Dann die Maus auf TextBox3 positioniert wird. Wenn dann Tab gedrückt wird wird bei mir das Form1_KeyUp Event nicht ausgeführt?? mobjControl_MouseEntered wird nicht auf Nothing gesetzt. Somit wird dann davon ausgegangen das der Focus mit der Maus gesetzt wurde.)
Dim mobjControl_MouseEntered As Control
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
Me.KeyPreview = True
End Sub' Die Tab Taste löst KeyUp aus.
If e.KeyCode = Keys.Tab Then
mobjControl_MouseEntered = Nothing
End If
End Sub
Private Sub TextBox3_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3.MouseEnter
mobjControl_MouseEntered = DirectCast(sender, Control)
End Sub
Private Sub TextBox3_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3.MouseLeave
mobjControl_MouseEntered = Nothing
End Sub
Private Sub TextBox3_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3.GotFocus
If mobjControl_MouseEntered Is sender Then
' Es war die Maus.
End If
mobjControl_MouseEntered = Nothing
End Sub
- Bearbeitet Markus222 Mittwoch, 15. Februar 2012 21:45
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 23. Februar 2012 08:42
Alle Antworten
-
Am Wed, 15 Feb 2012 14:32:06 +0000 schrieb peter haus:
Hallo zusammen,
ich habe eine etwas eigenwillige Benutzerführung. (wurde so gewünscht)
Ich sollte in einem bestimmten Fall wissen ob ein Control den Focus durch die Tab-Taste bekommt oder einen Maus-Klick.
(Hauptsächlich bei einem Maus-Click, weil das irgend ein Control sein kann)
Lässt sie das irgendwie feststellen, wleches Control als nächstes angeklickt wird?
Die Info brauche ich auch schon im Validating oder LostFocus Event des aktuell aktiven Controls.
Vielen Dank für Info
Gruss PeterIm Zweifelsfall würde ich einfach die Mouse-Events nehmen, z. B.
MouseEnter und MouseLeave.Gruß Ahmed
Antworten bitte nur in der Newsgroup
Windows 7 64bit Home Premium
Office Prof. 2010- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 23. Februar 2012 08:43
-
Hallo,
die Events die Ahmed nennt bieten sich an. Weil sie für ein Control welches mit der Maus angeclickt wird ausgeführt werden bevor das Validating und LostFocus Event des zuvor aktiven Controls ausgeführt werden. (Im Gegensatz zu MouseDown und MouseClick.)
Z.B. für eine TextBox mit Namen TextBox3:
(Ungelöst ist die Situation wenn der Focus auf TextBox2 steht. Dann die Maus auf TextBox3 positioniert wird. Wenn dann Tab gedrückt wird wird bei mir das Form1_KeyUp Event nicht ausgeführt?? mobjControl_MouseEntered wird nicht auf Nothing gesetzt. Somit wird dann davon ausgegangen das der Focus mit der Maus gesetzt wurde.)
Dim mobjControl_MouseEntered As Control
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
Me.KeyPreview = True
End Sub' Die Tab Taste löst KeyUp aus.
If e.KeyCode = Keys.Tab Then
mobjControl_MouseEntered = Nothing
End If
End Sub
Private Sub TextBox3_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3.MouseEnter
mobjControl_MouseEntered = DirectCast(sender, Control)
End Sub
Private Sub TextBox3_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3.MouseLeave
mobjControl_MouseEntered = Nothing
End Sub
Private Sub TextBox3_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3.GotFocus
If mobjControl_MouseEntered Is sender Then
' Es war die Maus.
End If
mobjControl_MouseEntered = Nothing
End Sub
- Bearbeitet Markus222 Mittwoch, 15. Februar 2012 21:45
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 23. Februar 2012 08:42
-
Hallo peter haus,
Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.