Jag har ett gäng textboxar som jag vill fånga händelsen TextChanged på. Finns det något snyggt sätt eller måste man känna av detta per textbox? Du måste koppla eventet på varje kontroll till en handler-metod. Det får du ju som inputparameter i handler-metoden. Ett snyggare sätt att koppla eventen (som är mer likt C#) Föresten får inte fram att det är Textbox1 med sender ... Kom på det nu. Behöver du verkligen veta det? För om du ska göra helt olika saker beroende på vilken kontroll det är, kanske egna handle-metoder är bättre.TextChanged på flera textboxar
Sv: TextChanged på flera textboxar
Men du kan koppla alla till samma metod.Sv: TextChanged på flera textboxar
Private Sub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged, TextBox2.TextChanged
Dim textbox As TextBox = sender
...
End Sub
Sv:TextChanged på flera textboxar
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler TextBox1.TextChanged, AddressOf TextBox_TextChanged
AddHandler TextBox2.TextChanged, AddressOf TextBox_TextChanged
End Sub
Private Sub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim textbox As TextBox = sender
textbox. ...
End Sub
Då blir inte metoden så lång om du har massor av event kopplade. Samt att du har mer kontroll och kan lägga till och ta bort event när de behövs. RemoveHandler används för att ta bort dem.
Sv:TextChanged på flera textboxar
Sv: TextChanged på flera textboxar
Finns ju otaliga sätt att kolla det på:
Dim textbox As TextBox = sender
If textbox.Handle = TextBox1.Handle Then
'eller
If textbox.Equals(TextBox1) Then
'eller
If textbox.Name = TextBox1.Name Then
'eller
If Object.ReferenceEquals(textbox, TextBox1) Then
Den sista är mest korrekt.