View Full Version : Array di controlli in VB.NET
Vorrei fare una domanda su Visual Basic . NET insomma programmando in Visual Studio.
Premetto che ho programamto fino ad oggi solo su Pascal e VB6 e che utilizzo vb.NET tipo da qualche ora per imparare.
La mia domanda è questa come faccio a creare degli array di controlli?? in vb.net mi sembra di aver capito che non si può fare, che non esiste in vb.net, non saprei comunque l'array di controlli era davvero utile creavo una cosa e poi ne creavo delle copie, con dei cicli potevo fare comdamente confronti ecc....
cortesemente non mi linkate pagine in inglese, lo mastico ma non moltissimo.
grazie a tutti coloro che mi aiuteranno :help:
P.S. mi va bene anche qualsiasi cosa che possa essere simile alla creazione di un array di controlli.
vedendo dal sito microsoft MSDN anche se da una pagina in inglese sono riuscito a creare questo array di controlli creando una classe che ho leggermente modificato per adattarlo alle mie esigenze (posto il codice):
Public Class CreazioneLabel
Inherits System.Collections.CollectionBase
Private ReadOnly HostForm As System.Windows.Forms.Form
Public Function AddNewLabel(Optional ByVal DSopra As Integer = 25, Optional ByVal DSinistra As Integer = 0) As System.Windows.Forms.Label
' Create a new instance of the Button class.
Dim aLabel As New System.Windows.Forms.Label()
' Add the button to the collection's internal list.
Me.List.Add(aLabel)
' Add the button to the controls collection of the form
' referenced by the HostForm field.
HostForm.Controls.Add(aLabel)
' Set intial properties for the button object.
aLabel.Top = Count * 25
aLabel.Left = DSinistra
aLabel.Tag = Me.Count
aLabel.Text = "LabelMichele " & Me.Count.ToString
aLabel.Visible = True
AddHandler aLabel.Click, AddressOf ClickHandler
Return aLabel
End Function
Public Sub New(ByVal host As System.Windows.Forms.Form)
HostForm = host
Me.AddNewLabel()
End Sub
Default Public ReadOnly Property Item(ByVal Index As Integer) As _
System.Windows.Forms.Label
Get
Return CType(Me.List.Item(Index), System.Windows.Forms.Label)
End Get
End Property
Public Sub Remove()
' Check to be sure there is a button to remove.
If Me.Count > 0 Then
' Remove the last button added to the array from the host form
' controls collection. Note the use of the default property in
' accessing the array.
HostForm.Controls.Remove(Me(Me.Count - 1))
Me.List.RemoveAt(Me.Count - 1)
End If
End Sub
Public Sub ClickHandler(ByVal sender As Object, ByVal e As _
System.EventArgs)
MessageBox.Show("you have clicked Label " & CType(CType(sender, _
System.Windows.Forms.Label).Tag, String))
End Sub
End Class
vorrei chiedere tuttavia dei chiarimenti tipo questa riga a che serve:
Private ReadOnly HostForm As System.Windows.Forms.Form
cosa fa esattamente.
e un'ultima cosa il me esattamente per cosa sta? per alabel forse.
Provo a chiedere qualche altra cosa forse sarò più fortunato:
è possibile eliminare da una procedura definita in una classe (la cui esucuzione è peraltro collegata ad un evento del controllo facente parte dell'array) elimimare un elemento che fa parte di una groupbox.
so che il comando è: groupbox.controls.remove(elemento che voglio eliminare)
ma da una classe mi pare che non funzioni per niente o almeno così non funziona perchè mi da come errore oggetto non dichiarato.
tra l'altro la stessa groupbox la considera un elemento non dichiarato(come peraltro è logico che sia, essendo quegli elementi facenti parte di un'altra classe almeno penso).
spero di essere stato chiaro nell'esporre questo mio problmea se non lo sono stato chiederte pure anche per qualsiasi altro dubbio sarò ben lieto di rispondere. :help:
Che bello mi faccio le domande e mi do una risposta da solo :cool:
Vabbè meglio che riesco a trovare le risposte da solo:
la soluzione è più semplcie di quantyo pensavo bastava richiamare dalla procedura nella classe per creare l'array una procedura pubblica nella classe form1, o almeno penso sia questa la soluzione migliore o comunque quella più semplice.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.