| |
VB.NET - Ein- und UmsteigerClick 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 | |
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. | |
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 | |
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 ??? | |
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 | |
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 | |
| 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 |
|
|
Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|