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

Control loading through code

P: n/a
How can I declare in VB .NET an array of labels for
example and afterwards using a FOR structure load every
component of the array?

I've used this code but it doesn't work:

dim x(10) as label

for i=0 to 10
x(i)=new label
x(i).visible=true
x(i).show
next i
Nov 20 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
>How can I declare in VB .NET an array of labels for
example and afterwards using a FOR structure load every
component of the array?
Yes.

I've used this code but it doesn't work:

dim x(10) as label

for i=0 to 10
x(i)=new label
x(i).visible=true
x(i).show
next i


You must also add the controls to the Controls collection of the
parent (probably your Form).

Controls.Add(x(i))

Mattias

--
Mattias Sjögren [MVP] mattias @ mvps.org
http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.com
Please reply only to the newsgroup.
Nov 20 '05 #2

P: n/a
Thanks a lot, it works!!!

I've also noticed in vb. net that if I have a label
control on the form and then copy it on the same form I
don't have the option to create an array. Was this
possibility removed?

-----Original Message-----
How can I declare in VB .NET an array of labels for
example and afterwards using a FOR structure load every
component of the array?
Yes.

I've used this code but it doesn't work:

dim x(10) as label

for i=0 to 10
x(i)=new label
x(i).visible=true
x(i).show
next i


You must also add the controls to the Controls

collection of theparent (probably your Form).

Controls.Add(x(i))

Mattias

--
Mattias Sjögren [MVP] mattias @ mvps.org
http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.comPlease reply only to the newsgroup.
.

Nov 20 '05 #3

P: n/a
* "Robert" <an*******@discussions.microsoft.com> scripsit:
I've also noticed in vb. net that if I have a label
control on the form and then copy it on the same form I
don't have the option to create an array. Was this
possibility removed?


Yes.

My FAQ:

\\\
Private Function FindControl( _
ByVal ControlName As String, _
ByVal CurrentControl As Control _
) As Control
Dim ctr As Control
For Each ctr In CurrentControl.Controls
If ctr.Name = ControlName Then
Return ctr
Else
ctr = FindControl(ControlName, ctr)
If Not ctr Is Nothing Then
Return ctr
End If
End If
Next ctr
End Function
///

Usage:

\\\
DirectCast(FindControl("btnBla", Me), Button).Enabled = False
///

Notice that the procedure listed above is "slow", if you have to access a
lot of controls by name very often, you should store references to them in a
'Hashtable' object. You can use the name of the control as key:

\\\
Private m_Controls As New Hashtable()
///

Adding a control:

\\\
Dim DynamicPictureBox As New PictureBox()
DynamicPictureBox.Name = "PictureBox1"
m_Controls.Add(DynamicPictureBox.Name, DynamicPictureBox)
///

Looking for a control:

\\\
Dim p As PictureBox = DirectCast(m_Controls.Item("PictureBox1"), PictureBox)
///

Removing a control:

\\\
m_Controls.Remove("PictureBox1")
///

Sometimes it's even better to add the control to an array. This will allow
fast and easy index-based access to the control references:

\\\
Dim MyLabels() As Label = {Label1, Label2, ..., Label10}
///

Access by 'MyLabels(0)' to 'MyLabels(9)'.

Control arrays:

Control arrays, as known from VB6, are not included in VB.NET 2002/2003.

Creating Control Arrays in Visual Basic .NET and Visual C# .NET:
<URL:http://msdn.microsoft.com/library/en-us/dv_vstechart/html/vbtchCreatingControlArraysInVisualBasicNETVisualCN ET.asp>

WinForms Controls--Creating Control Arrays in VB.NET
<URL:http://www.devx.com/vb2themax/Article/19907/>

In VS.NET "Whidbey" (2005) control arrays will be supported natively.

--
Herfried K. Wagner [MVP]
<URL:http://dotnet.mvps.org/>
Nov 20 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.