Benutzer mit den meisten Antworten
Ereignisbehandlung zuweisen

Frage
-
Hallo,
in einem Formular lege ich mehrere Textboxen an (siehe Code).Wie kann ich jetzt bei den Textboxen auf das OnKeyDown-Ereignis reagieren ?
for count = 1 to ParameterFeldAnzahl Parameter(count) = New TextBox Parameter(count).Left = ParameterFeldLinks Parameter(count).Top = ParameterFeldOben + ParameterFeldVertVersatz* (count - 1) Parameter(count).Width = ParameterFeldBreit Parameter(count).Height = ParameterFeldHoch Me.Controls.Add(Parameter(count)) Parameter(count).Show() Next
Wenn in den Textboxen Text eingegeben und anschlissend die Entertatse gedrückt wird soll der Text verarbeitet werden.Die Anzahl der Textboxen ist dynamisch
Danke im Voraus,Diburg- Bearbeitet Robert Breitenhofer Dienstag, 17. August 2010 06:45 Formatierung
Antworten
-
Hallo,
in einem Formular lege ich mehrere Textboxen an (siehe Code).Wie kann ich jetzt bei den Textboxen auf das OnKeyDown-Ereignis reagieren ?
for count = 1 to ParameterFeldAnzahlParameter(count) = New TextBoxParameter(count).Left = ParameterFeldLinksParameter(count).Top = ParameterFeldOben + ParameterFeldVertVersatz* (count - 1)Parameter(count).Width = ParameterFeldBreitParameter(count).Height = ParameterFeldHochMe.Controls.Add(Parameter(count))Parameter(count).Show()Next
Wenn in den Textboxen Text eingegeben und anschlissend die Entertatse gedrückt wird soll der Text verarbeitet werden.Über die AddHandler Anweisung kannst Du Ereignismethoden zuweisen. Die Signatur dieser Methode muss dabei dem Ereignishandler entsprechen. Für das KeyDown Ereignis wäre dies wie folgt:
Private Sub TextBoxKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) End Sub
Der Parameter 'sender' liefert Dir immer die TextBox, die das Ereignis ausgelöst hat. Jetzt kannst Du in Deiner Schleife diese Methode dem KeyDown Ereignis zuweisen:
AddHandler Parameter(count).KeyDown, AddressOf TextBoxKeyDown
Mit der RemoveHandler Anweisung kannst Du die Zuweisung wieder auflösen.
AddHandler und RemoveHandler
http://msdn.microsoft.com/de-de/library/6yyk8z93(VS.90).aspx
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort vorgeschlagen Robert Breitenhofer Dienstag, 17. August 2010 06:45
- Als Antwort markiert Thorsten Dörfler Freitag, 10. September 2010 19:41
-
Hallo,
in einem Formular lege ich mehrere Textboxen an (siehe Code).
Wie kann ich jetzt bei den Textboxen auf das OnKeyDown-Ereignis
reagieren ?Das nachfolgende Beispiel zeigt Dir, wie Du mehrere Textboxen
erstellen kannst und diesen die Ereignisprozeduren (Eventhandler)
KeyDown, KeyPress, KeyUp u. TextChanged zuweisen und später
auch wieder entfernen kannst.Kopiere nachfolgenden Code in ein leeres Formmodul (Form1.vb)
' / Beginn Code Form1.vb
Public Class Form1
Private Sub Form1_FormClosing _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs _
) Handles Me.FormClosingDim i As Integer
' Eventhandler entfernen
For i = 1 To 5
Dim TB As TextBox = _
DirectCast(Me.Controls("Textbox" & i.ToString), TextBox)RemoveHandler _
TB.TextChanged, _
AddressOf TextBox_TextChangedRemoveHandler _
TB.KeyDown, _
AddressOf TextBox_KeyDownRemoveHandler _
TB.KeyPress, _
AddressOf TextBox_KeyPressRemoveHandler _
TB.KeyUp, _
AddressOf TextBox_KeyUp
NextEnd Sub
Private Sub Form1_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.LoadCreateControls()
End SubPrivate Sub CreateControls()
Dim i As Integer
Dim TB As TextBox
Dim Top As Integer = 15
Dim Fnt As New Font("Arial", 12)For i = 1 To 5
TB = New TextBox
With TB
.Name = "Textbox" & i.ToString
.Font = Fnt
.SetBounds _
(10, Top, _
Me.ClientSize.Width - 20, _
.Height).Anchor = _
AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right.Text = .Name
Top = TB.Bottom + 10
End With
Me.Controls.Add(TB)' Eventhandler hinzufügen
AddHandler _
TB.TextChanged, _
AddressOf TextBox_TextChangedAddHandler _
TB.KeyDown, _
AddressOf TextBox_KeyDownAddHandler _
TB.KeyPress, _
AddressOf TextBox_KeyPressAddHandler _
TB.KeyUp, _
AddressOf TextBox_KeyUp
Next
End SubPrivate Sub TextBox_KeyDown _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs)Dim TB As TextBox = DirectCast(sender, TextBox)
Console.WriteLine("KeyDown: " & TB.Name)End Sub
Private Sub TextBox_KeyPress _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs)Dim TB As TextBox = DirectCast(sender, TextBox)
Console.WriteLine("KeyPress: " & TB.Name)If e.KeyChar = Chr(Keys.Enter) Then
Select Case TB.Name
Case "Textbox1"
Me.Controls("Textbox2").Focus()
Case "Textbox2"
Me.Controls("Textbox3").Focus()
Case "Textbox3"
Me.Controls("Textbox4").Focus()
Case "Textbox4"
Me.Controls("Textbox5").Focus()
Case "Textbox5"
Me.Controls("Textbox1").Focus()
End Select' Beep beim Drücken der Eingabetaste unterdrücken
e.Handled = True
End If
End SubPrivate Sub TextBox_KeyUp _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs)Dim TB As TextBox = DirectCast(sender, TextBox)
Console.WriteLine("Key_Up: " & TB.Name)
End SubPrivate Sub TextBox_TextChanged _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs)Dim TB As TextBox = DirectCast(sender, TextBox)
Console.WriteLine("TextChanged: " & TB.Name)End Sub
End Class
' \\\ E N T EAuf eine einzelne dieser Textboxen kannst Du z.B. via
dim TB As Textbox
TB = DirectCast(Me.Controls("Textbox1"), Textbox)zugreifen.
Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)- Als Antwort vorgeschlagen Robert Breitenhofer Dienstag, 17. August 2010 06:46
- Als Antwort markiert Thorsten Dörfler Freitag, 10. September 2010 19:41
Alle Antworten
-
Hallo,
in einem Formular lege ich mehrere Textboxen an (siehe Code).Wie kann ich jetzt bei den Textboxen auf das OnKeyDown-Ereignis reagieren ?
for count = 1 to ParameterFeldAnzahlParameter(count) = New TextBoxParameter(count).Left = ParameterFeldLinksParameter(count).Top = ParameterFeldOben + ParameterFeldVertVersatz* (count - 1)Parameter(count).Width = ParameterFeldBreitParameter(count).Height = ParameterFeldHochMe.Controls.Add(Parameter(count))Parameter(count).Show()Next
Wenn in den Textboxen Text eingegeben und anschlissend die Entertatse gedrückt wird soll der Text verarbeitet werden.Über die AddHandler Anweisung kannst Du Ereignismethoden zuweisen. Die Signatur dieser Methode muss dabei dem Ereignishandler entsprechen. Für das KeyDown Ereignis wäre dies wie folgt:
Private Sub TextBoxKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) End Sub
Der Parameter 'sender' liefert Dir immer die TextBox, die das Ereignis ausgelöst hat. Jetzt kannst Du in Deiner Schleife diese Methode dem KeyDown Ereignis zuweisen:
AddHandler Parameter(count).KeyDown, AddressOf TextBoxKeyDown
Mit der RemoveHandler Anweisung kannst Du die Zuweisung wieder auflösen.
AddHandler und RemoveHandler
http://msdn.microsoft.com/de-de/library/6yyk8z93(VS.90).aspx
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort vorgeschlagen Robert Breitenhofer Dienstag, 17. August 2010 06:45
- Als Antwort markiert Thorsten Dörfler Freitag, 10. September 2010 19:41
-
Hallo,
in einem Formular lege ich mehrere Textboxen an (siehe Code).
Wie kann ich jetzt bei den Textboxen auf das OnKeyDown-Ereignis
reagieren ?Das nachfolgende Beispiel zeigt Dir, wie Du mehrere Textboxen
erstellen kannst und diesen die Ereignisprozeduren (Eventhandler)
KeyDown, KeyPress, KeyUp u. TextChanged zuweisen und später
auch wieder entfernen kannst.Kopiere nachfolgenden Code in ein leeres Formmodul (Form1.vb)
' / Beginn Code Form1.vb
Public Class Form1
Private Sub Form1_FormClosing _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs _
) Handles Me.FormClosingDim i As Integer
' Eventhandler entfernen
For i = 1 To 5
Dim TB As TextBox = _
DirectCast(Me.Controls("Textbox" & i.ToString), TextBox)RemoveHandler _
TB.TextChanged, _
AddressOf TextBox_TextChangedRemoveHandler _
TB.KeyDown, _
AddressOf TextBox_KeyDownRemoveHandler _
TB.KeyPress, _
AddressOf TextBox_KeyPressRemoveHandler _
TB.KeyUp, _
AddressOf TextBox_KeyUp
NextEnd Sub
Private Sub Form1_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.LoadCreateControls()
End SubPrivate Sub CreateControls()
Dim i As Integer
Dim TB As TextBox
Dim Top As Integer = 15
Dim Fnt As New Font("Arial", 12)For i = 1 To 5
TB = New TextBox
With TB
.Name = "Textbox" & i.ToString
.Font = Fnt
.SetBounds _
(10, Top, _
Me.ClientSize.Width - 20, _
.Height).Anchor = _
AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right.Text = .Name
Top = TB.Bottom + 10
End With
Me.Controls.Add(TB)' Eventhandler hinzufügen
AddHandler _
TB.TextChanged, _
AddressOf TextBox_TextChangedAddHandler _
TB.KeyDown, _
AddressOf TextBox_KeyDownAddHandler _
TB.KeyPress, _
AddressOf TextBox_KeyPressAddHandler _
TB.KeyUp, _
AddressOf TextBox_KeyUp
Next
End SubPrivate Sub TextBox_KeyDown _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs)Dim TB As TextBox = DirectCast(sender, TextBox)
Console.WriteLine("KeyDown: " & TB.Name)End Sub
Private Sub TextBox_KeyPress _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs)Dim TB As TextBox = DirectCast(sender, TextBox)
Console.WriteLine("KeyPress: " & TB.Name)If e.KeyChar = Chr(Keys.Enter) Then
Select Case TB.Name
Case "Textbox1"
Me.Controls("Textbox2").Focus()
Case "Textbox2"
Me.Controls("Textbox3").Focus()
Case "Textbox3"
Me.Controls("Textbox4").Focus()
Case "Textbox4"
Me.Controls("Textbox5").Focus()
Case "Textbox5"
Me.Controls("Textbox1").Focus()
End Select' Beep beim Drücken der Eingabetaste unterdrücken
e.Handled = True
End If
End SubPrivate Sub TextBox_KeyUp _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs)Dim TB As TextBox = DirectCast(sender, TextBox)
Console.WriteLine("Key_Up: " & TB.Name)
End SubPrivate Sub TextBox_TextChanged _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs)Dim TB As TextBox = DirectCast(sender, TextBox)
Console.WriteLine("TextChanged: " & TB.Name)End Sub
End Class
' \\\ E N T EAuf eine einzelne dieser Textboxen kannst Du z.B. via
dim TB As Textbox
TB = DirectCast(Me.Controls("Textbox1"), Textbox)zugreifen.
Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)- Als Antwort vorgeschlagen Robert Breitenhofer Dienstag, 17. August 2010 06:46
- Als Antwort markiert Thorsten Dörfler Freitag, 10. September 2010 19:41