By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,032 Members | 1,161 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,032 IT Pros & Developers. It's quick & easy.

Control Arrays

P: n/a
I'm a recent convert to VB.net from VB6...and I can't believe they don't
support control arrays. I have an app that uses a ton of Control
Arrays...mostly labels and text boxes.

I need some guidance on how to proceed...including any third party tools.

Thanks
Nov 14 '06 #1
Share this Question
Share on Google+
4 Replies


P: n/a
Try converting your VB6 application to .NET using the Upgrade Wizard built
in to Visual Studio. To use the wizard, just open your VB6 .vbp file with
the "File/Open Project" command in Visual Studio for .NET. Then check the
code in those forms that use control arrays. The wizard uses some custom
classes that try to simulate access in a control-array-like fashion.

If your control arrays exist to support controls that share all logic in
common, you can now share event handlers among multiple controls. This lets
you give unique names to each control, but still use a common event handler.
If the controls in your control array have completely unrelated logic, it
is best to make them distinct controls with unique names, and dispense with
the control array altogether.

-----
Tim Patrick
Start-to-Finish Visual Basic 2005
I'm a recent convert to VB.net from VB6...and I can't believe they
don't support control arrays. I have an app that uses a ton of
Control Arrays...mostly labels and text boxes.

I need some guidance on how to proceed...including any third party
tools.

Thanks

Nov 14 '06 #2

P: n/a
Arne,
I use Tim's approach a lot and it works well. So, you can give your controls
unique names and in code use the AddHandler method to set the method for
whatever event it is you are trying to handle. So, you would write a
function, say TextBox_Click(sender as Object, e as EventArgs)
Then, use the AddHandler method:
AddHandler mytextbox.Click, AddressOf TextBox_Click

Then, in your TextBox_Click routine, you could cast the sender object to a
textbox object and check its name.
So:
Dim myTxt as TextBox
if Typeof sender is TextBox then
myTxt = DirectCast(sender, TextBox)
end if

select case myTxt.Name.ToLower
case "myname"
' do something
case else
' do something else
end select

I wasn't looking at the docs when I wrote this so forgive if I've messed up
an parameters to functions

:)
Steve

"Arne Beruldsen" <Ar***********@discussions.microsoft.comwrote in message
news:E9**********************************@microsof t.com...
I'm a recent convert to VB.net from VB6...and I can't believe they don't
support control arrays. I have an app that uses a ton of Control
Arrays...mostly labels and text boxes.

I need some guidance on how to proceed...including any third party tools.

Thanks

Nov 15 '06 #3

P: n/a
Using the name works fine, but you can also test the object itself using
the "Is" keyword to see if it is actually one of your controls.

Public Sub MyTextBoxHandler(ByVal sender As Object, ByVal e As System.EventArgs)
_
Handles TextBox1.TextChanged, TextBox2.TextChanged, TextBox3.TextChanged
If (sender Is TextBox1) Then
' ----- Do text box #1 stuff.
ElseIf (sender Is TextBox2) Then
' ----- Do text box #2 stuff.
ElseIf (sender Is TextBox3) Then
' ----- Do text box #3 stuff.
End If

' ----- Then add common code here.

End Sub

Even though, I think it is generally best to handle each control separately,
and call common routines where there are overlaps.

-----
Tim Patrick
Start-to-Finish Visual Basic 2005
Arne,
I use Tim's approach a lot and it works well. So, you can give your
controls
unique names and in code use the AddHandler method to set the method
for
whatever event it is you are trying to handle. So, you would write a
function, say TextBox_Click(sender as Object, e as EventArgs)
Then, use the AddHandler method:
AddHandler mytextbox.Click, AddressOf TextBox_Click
Then, in your TextBox_Click routine, you could cast the sender object
to a
textbox object and check its name.
So:
Dim myTxt as TextBox
if Typeof sender is TextBox then
myTxt = DirectCast(sender, TextBox)
end if
select case myTxt.Name.ToLower
case "myname"
' do something
case else
' do something else
end select
I wasn't looking at the docs when I wrote this so forgive if I've
messed up an parameters to functions

:)
Steve
"Arne Beruldsen" <Ar***********@discussions.microsoft.comwrote in
message news:E9**********************************@microsof t.com...
>I'm a recent convert to VB.net from VB6...and I can't believe they
don't support control arrays. I have an app that uses a ton of
Control Arrays...mostly labels and text boxes.

I need some guidance on how to proceed...including any third party
tools.

Thanks

Nov 15 '06 #4

P: n/a
Hmm, cool. I didn't even think about chaining the Handles keyword...
"Tim Patrick" <in*****@invalid.com.invalidwrote in message
news:e3*************************@newsgroups.comcas t.net...
Using the name works fine, but you can also test the object itself using
the "Is" keyword to see if it is actually one of your controls.

Public Sub MyTextBoxHandler(ByVal sender As Object, ByVal e As
System.EventArgs) _
Handles TextBox1.TextChanged, TextBox2.TextChanged,
TextBox3.TextChanged
If (sender Is TextBox1) Then
' ----- Do text box #1 stuff.
ElseIf (sender Is TextBox2) Then
' ----- Do text box #2 stuff.
ElseIf (sender Is TextBox3) Then
' ----- Do text box #3 stuff.
End If

' ----- Then add common code here.

End Sub

Even though, I think it is generally best to handle each control
separately, and call common routines where there are overlaps.

-----
Tim Patrick
Start-to-Finish Visual Basic 2005
>Arne,
I use Tim's approach a lot and it works well. So, you can give your
controls
unique names and in code use the AddHandler method to set the method
for
whatever event it is you are trying to handle. So, you would write a
function, say TextBox_Click(sender as Object, e as EventArgs)
Then, use the AddHandler method:
AddHandler mytextbox.Click, AddressOf TextBox_Click
Then, in your TextBox_Click routine, you could cast the sender object
to a
textbox object and check its name.
So:
Dim myTxt as TextBox
if Typeof sender is TextBox then
myTxt = DirectCast(sender, TextBox)
end if
select case myTxt.Name.ToLower
case "myname"
' do something
case else
' do something else
end select
I wasn't looking at the docs when I wrote this so forgive if I've
messed up an parameters to functions

:)
Steve
"Arne Beruldsen" <Ar***********@discussions.microsoft.comwrote in
message news:E9**********************************@microsof t.com...
>>I'm a recent convert to VB.net from VB6...and I can't believe they
don't support control arrays. I have an app that uses a ton of
Control Arrays...mostly labels and text boxes.

I need some guidance on how to proceed...including any third party
tools.

Thanks


Nov 15 '06 #5

This discussion thread is closed

Replies have been disabled for this discussion.