vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 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 - Ein- und Umsteiger
Click und KeyDown Problem 
Autor: Andreas M.
Datum: 29.01.22 15:05

Hallo,

bin VB6 auf Visual Basic 2019 Umsteiger

ich möchte gerne die 3 Button über die Enter Taste steuern
was auch funktioniert, aber nicht so wie es soll.
Wenn der Button den Fokus hat und ich die Enter Taste drücke werden die Anweisungen im Click Event ausgeführt, aber nicht die des KeyDown

Im Label2 wird kein Text geändert

Was mache ich bitte falsch ???


Beispiel Gif Animation
http://www.spesenroth.de/forums/ClickKeyDown.gif

Public Class Form1
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        AlleButtonSilber()
        Button1.BackColor = Color.Yellow
        Button1.Select()
    End Sub
 
    Private Sub AlleButtonSilber()
        Button1.BackColor = Color.Silver
        Button2.BackColor = Color.Silver
        Button3.BackColor = Color.Silver
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
      Button1.Click
        Label1.Text = "Click 1"
        AlleButtonSilber()
        Button2.BackColor = Color.Yellow
        Button2.Select()
    End Sub
 
    Private Sub Button1_KeyDown(sender As Object, e As KeyEventArgs) Handles _
      Button1.KeyDown
        If e.KeyCode = Keys.Enter Then
            Label2.Text = "Enter wurde gedrückt KeyDown 1"
            'Button2.Select()
        End If
    End Sub
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles _
      Button2.Click
        Label1.Text = "Click 2"
        AlleButtonSilber()
        Button3.BackColor = Color.Yellow
        Button3.Select()
    End Sub
 
    Private Sub Button2_KeyDown(sender As Object, e As KeyEventArgs) Handles _
      Button2.KeyDown
        If e.KeyCode = Keys.Enter Then
            Label2.Text = "Enter wurde gedrückt KeyDown 2"
            'Button3.Select()
        End If
    End Sub
 
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles _
      Button3.Click
        Label1.Text = "Click 3"
        AlleButtonSilber()
        Button1.BackColor = Color.Yellow
        Button1.Select()
    End Sub
 
    Private Sub Button3_KeyDown(sender As Object, e As KeyEventArgs) Handles _
      Button3.KeyDown
        If e.KeyCode = Keys.Enter Then
            Label2.Text = "Enter wurde gedrückt KeyDown 3"
            'Button1.Select()
        End If
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Click und KeyDown Problem 
Autor: Manfred X
Datum: 29.01.22 19:21

Hallo!

Einige Tasten werden von den Controls im Standardmodus automatisch verarbeitet.
Um dieses Verhalten zu ändern, kannst Du das PreviewKeyDown-Ereignis einsetzen.
In der Dokumentation findet sich dazu das geeignete Beispiel.


  Private Sub Button_previewkeydown(sender As Object, e As _
    PreviewKeyDownEventArgs) 
    Handles button1.PreviewKeyDown, button2.PreviewKeyDown, _
    button3.PreviewKeyDown
 
        Select Case e.KeyCode
            Case Keys.Return
                e.IsInputKey = True
        End Select
 
  End Sub


Beitrag wurde zuletzt am 29.01.22 um 19:47:55 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Click und KeyDown Problem 
Autor: Andreas M.
Datum: 29.01.22 21:05

Vielen vielen Dank für die Hilfe

Sie haben mir sogar das Problem mit dem nicht mehr vorhandenen Index von VB6 gelöst

Habe den Code folgender massen geändert und es funktioniert super

Einen Frage, ist die Anzahl der Buttons oder Steuerelemente hinter dem Handles begrenzt ???

In meinem Projekt möchte ich 53 Button damit ansprechen

Private Sub Button_previewkeydown(sender As Object, e As _
    PreviewKeyDownEventArgs) Handles Button1.PreviewKeyDown, _
    Button2.PreviewKeyDown, Button3.PreviewKeyDown
 
        Select Case e.KeyCode
            Case Keys.Return
                e.IsInputKey = True
        End Select
 
    End Sub
 
    Private Sub Button_Click(sender As Object, e As EventArgs) Handles _
      Button1.Click, Button2.Click, Button3.Click
        Select Case ixi
            Case 1
                ixi = 2
                Label1.Text = "Click 1"
                AlleButtonSilber()
                Button2.BackColor = Color.Yellow
                Button2.Select()
            Case 2
                ixi = 3
                Label1.Text = "Click 2"
                AlleButtonSilber()
                Button3.BackColor = Color.Yellow
                Button3.Select()
            Case 3
                ixi = 1
                Label1.Text = "Click 3"
                AlleButtonSilber()
                Button1.BackColor = Color.Yellow
                Button1.Select()
        End Select
    End Sub
 
    Private Sub Button_KeyDown(sender As Object, e As KeyEventArgs) Handles _
      Button1.KeyDown, Button2.KeyDown, Button3.KeyDown
        If e.KeyCode = Keys.Enter Then
            Select Case ixi
                Case 1
                    ixi = 2
                    Label2.Text = "Enter wurde gedrückt KeyDown 1"
                    AlleButtonSilber()
                    Button2.BackColor = Color.Yellow
                    Button2.Select()
                Case 2
                    ixi = 3
                    Label2.Text = "Enter wurde gedrückt KeyDown 2"
                    AlleButtonSilber()
                    Button3.BackColor = Color.Yellow
                    Button3.Select()
                Case 3
                    ixi = 1
                    Label2.Text = "Enter wurde gedrückt KeyDown 3"
                    AlleButtonSilber()
                    Button1.BackColor = Color.Yellow
                    Button1.Select()
            End Select
        End If
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Click und KeyDown Problem 
Autor: Andreas M.
Datum: 29.01.22 22:43

Jetzt habe ich nur ein neues Problem

gibt es bei dieser Methode auch einen Trick um raus zu finden auf welchen Bottun ich einen Maus Click gemacht habe, damit der Variable ixi der aktuelle Wert (Button1 = 1)usw. zugewiesen werden kann ???
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Click und KeyDown Problem 
Autor: Andreas M.
Datum: 30.01.22 00:04

Problem gelöst

Vielen Dank nochmal

Private Sub Button_Click(sender As Object, e As EventArgs) Handles _
  Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click, _
  Button6.Click, Button7.Click, Button8.Click, Button9.Click, Button10.Click
 
        ixi = CType(sender, Button).Text
 
        Select Case ixi
            Case 1
            ...
            Case 2
            ...
        End Select
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Click und KeyDown Problem 
Autor: Manfred X
Datum: 30.01.22 06:13

Hallo!

Wenn Du eine größere Zahl von Controls in einem Formular bzw. Fenster oder Container
benötigst, erledige das nicht im Designer, sondern erstelle diese Controls in einer
Code-Schleife. Richte dabei die Einstellungen ein und weise die Referenzen auf
ein Array, eine generische Liste oder eine generische Dictionary zu.

Die Zuordnung von Eventhandler-Routinen zu den Controls wird dabei nicht per
Withevents/Handles-Klausel vorgenommen, sondern über die AddHandler-Methode unter
Nutzung des Addressof-Operators.

Windows-Forms-Beispiel:
Public Class frmButtonCreate
 
    'Liste zur späteren Aufnahme der Button-Referenzen als Listen-Items
    Private Buttons As New List(Of Button)
 
 
    Private Sub frmButtonCreate_Load(sender As Object, e As EventArgs) Handles _
      MyBase.Load
 
        Me.Size = New Size(200, 500)
 
        Dim btn As Button 'Variable für eine Referenz auf ein Button-Objekt
 
        For i As Integer = 1 To 10
            'neuen Button erstellen und Eigenschaften einrichten
            'Referenz in Variable btn wechselt
            btn = New Button With 
            {.Parent = Me, .Text = "Button_" & i.ToString, 
             .Top = (i - 1) * 40, .Width = 100}
 
            'Farben einstellen
            btn.BackColor = Color.FromArgb(i * 20, i * 20, i * 20)
            btn.ForeColor = Color.Red
 
            'Button in Liste anhängen (Listen-Referenz auf Button)
            Buttons.Add(btn)
 
            'Click-Eventhandler zuordnen
            AddHandler btn.Click, AddressOf Buttons_Click
 
            'weitere Eventhandler zuordnen
            AddHandler btn.PreviewKeyDown, AddressOf Buttons_PreviewKeydown
            AddHandler btn.KeyDown, AddressOf Buttons_Keydown
        Next i
 
        'Einen Button der Liste per Code betätigen (Event wird ausgelöst)
        Buttons(5).PerformClick()
 
        'Die Handlerroutine eines Buttons im Code direkt aufrufen
        Buttons_Click(Buttons(3), EventArgs.Empty)
    End Sub
 
 
    Private Sub Buttons_Click(sender As Object, e As EventArgs)
        Dim btn As Button = DirectCast(sender, Button)
        MsgBox(btn.Text & " ist geclickt worden")
    End Sub
 
 
    Private Sub Buttons_Keydown(sender As Object, e As KeyEventArgs)
        Dim btn As Button = DirectCast(sender, Button)
        MsgBox(btn.Text & "  " & e.KeyCode.ToString & " ist betätigt worden.")
    End Sub
 
 
    Private Sub Buttons_PreviewKeydown(sender As Object, e As _
      PreviewKeyDownEventArgs)
        If e.KeyCode = Keys.Return Or e.KeyCode = Keys.Escape Then e.IsInputKey _
        = True
    End Sub
 
End Class
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