none
Control bekommt Focus duch Maus oder Tab? RRS feed

  • 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

    Mittwoch, 15. Februar 2012 14:32

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 Peter

    Im 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

    Mittwoch, 15. Februar 2012 19:44
  • 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
        Me.KeyPreview = True
      End Sub

      Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp

        ' 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




    Mittwoch, 15. Februar 2012 20:20

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 Peter

    Im 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

    Mittwoch, 15. Februar 2012 19:44
  • 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
        Me.KeyPreview = True
      End Sub

      Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp

        ' 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




    Mittwoch, 15. Februar 2012 20:20
  • 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  Twitter Facebook
    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.

    Donnerstag, 23. Februar 2012 08:42
    Moderator