how to group similar events?

G

Guest

Hello,

I have a group of textboxes where I change the text to lower on leave, but I
am sure there is a more efficient way to do this.

rivate Sub txt1_Leave(...) Handles txt1.Leave
Dim str1 As String = txt1.Text.ToLower
txt1.Text = str1
End Sub

Private Sub txt2_Leave(...) Handles txt2.Leave
Dim str1 As String = txt2.Text.ToLower
txt2.Text = str1
End Sub

Private Sub txtI3_Leave(...) Handles txtIDfld.Leave
Dim str1 As String = txtIDfld.Text.ToLower
txtIDfld.Text = str1
End Sub

Private Sub txt4_Leave(...) Handles txt4.Leave
Dim str1 As String = txt4.Text.ToLower
txt4.Text = str1
End Sub


I think the above can be replaced with something like

Private Sub onLeaving(ByVal sender As Object, ByVal e As System.EventArgs)
handles txt1.leave, txt2.leave, txt3.leave, txt4.leave
Dim str1 As String = sender.ToString.ToLower
sender = str1
End Sub

this line seems to work - str1 appears to get the value from sender
Dim str1 As String = sender.ToString.ToLower

But when I try to reapply the new value to sender as below

sender = str1

nothing happends. The text in the textbox did not get changed. Any
suggestions appreciated what I could do to make this work.

Thanks,
Rich
 
C

Chris

Rich said:
Hello,

I have a group of textboxes where I change the text to lower on leave, but I
am sure there is a more efficient way to do this.

rivate Sub txt1_Leave(...) Handles txt1.Leave
Dim str1 As String = txt1.Text.ToLower
txt1.Text = str1
End Sub

Private Sub txt2_Leave(...) Handles txt2.Leave
Dim str1 As String = txt2.Text.ToLower
txt2.Text = str1
End Sub

Private Sub txtI3_Leave(...) Handles txtIDfld.Leave
Dim str1 As String = txtIDfld.Text.ToLower
txtIDfld.Text = str1
End Sub

Private Sub txt4_Leave(...) Handles txt4.Leave
Dim str1 As String = txt4.Text.ToLower
txt4.Text = str1
End Sub


I think the above can be replaced with something like

Private Sub onLeaving(ByVal sender As Object, ByVal e As System.EventArgs)
handles txt1.leave, txt2.leave, txt3.leave, txt4.leave
Dim str1 As String = sender.ToString.ToLower
sender = str1
End Sub

this line seems to work - str1 appears to get the value from sender
Dim str1 As String = sender.ToString.ToLower

But when I try to reapply the new value to sender as below

sender = str1

nothing happends. The text in the textbox did not get changed. Any
suggestions appreciated what I could do to make this work.

Thanks,
Rich



Private Sub onLeaving(ByVal sender As Object, ByVal e As System.EventArgs)
handles txt1.leave, txt2.leave, txt3.leave, txt4.leave
Dim str1 As String = DirectCast(sender, TextBox).Text.ToLower
DirectCast(sender, TextBox).Text = str1
End Sub

If you turned on "Option Strict On" at the top of your class you would
have be told about this problem. I recommend always using it.

Chris
 
G

Guest

Thank you that worked. FYI, I did have option strict on. I did think I
would get a message about sender, but I didn't Hmmm.

Anyway, thanks for your help.
 
H

Herfried K. Wagner [MVP]

Rich said:
Private Sub onLeaving(ByVal sender As Object, ByVal e As System.EventArgs)
handles txt1.leave, txt2.leave, txt3.leave, txt4.leave
Dim str1 As String = sender.ToString.ToLower
sender = str1
End Sub

this line seems to work - str1 appears to get the value from sender
Dim str1 As String = sender.ToString.ToLower

But when I try to reapply the new value to sender as below

sender = str1

'DirectCast(sender, TextBox).Text = str1'.
 
C

Chris

Rich said:
Thank you that worked. FYI, I did have option strict on. I did think I
would get a message about sender, but I didn't Hmmm.

Anyway, thanks for your help.

:

Actually you wouldn't get the error now that look at it.


'This line you do a string to a string
Dim str1 As String = sender.ToString.ToLower

This one you assign the object to a string
sender = str1

Both of them are allowed since it is an object.
If you just did:
Dim str1 As String = sender
You'd get an error.

Chris
 
G

Guest

A better way to do it might be in the KeyAscii event to chane upper case keys
to lower case keys so the user sees only lower case being entered into the
text box.
 
C

Cor Ligthert [MVP]

Rich,

Be aware that there are here two criteria for efficient. It is more
efficient to write and maintain. Therefore I use it forever as showed by
others.

However it is less efficient to process (what is a very very very little
bit).

Cor
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top