Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VB.NET indice in una matrice di controlli

811 views
Skip to first unread message

Massimo Riccardi

unread,
Dec 20, 2009, 8:51:09 AM12/20/09
to
Ho creato una matrice di controlli a runtime in VB.NET. Come faccio a
recuperare l'indice del controllo che ho selezionato?
Ovvero ,se per esempio creo una matrice di controlli contenente 10
bottoni (Button (0),Button (1)......ecc.) e poi clicco sul bottone 5
come faccio a recuperare l'indice del bottone cliccato (cioe' che � il
quinto). In VB6 c'era l' (INDEX) che era molto comodo.

Grazie

Massimo


Luca D

unread,
Dec 20, 2009, 11:56:24 AM12/20/09
to
On Dec 20, 2:51 pm, "Massimo Riccardi" <rimass...@aliceposta.it>
wrote:

> Ho creato una matrice di controlli a runtime in VB.NET. Come faccio a
> recuperare l'indice del controllo che ho selezionato?
> Ovvero ,se per esempio  creo una matrice di controlli contenente  10
> bottoni  (Button (0),Button (1)......ecc.)  e poi clicco sul bottone 5
> come faccio a recuperare l'indice  del bottone cliccato (cioe' che è il

> quinto). In VB6 c'era  l' (INDEX)  che era molto comodo.

In .NET esiste, per tutti gli eventi, il parametro 'sender', ancora
più comodo.
E' un riferimento all'oggetto che ha invocato l'evento in questione
(posto che tu abbia già legato ogni bottone allo stesso evento tramite
AddHandler)

Se ne parla giusto in un altro post qui vicino: "VBNET - line vs
lineshape"

gabriele46

unread,
Jan 3, 2010, 12:30:24 PM1/3/10
to

ho un problema analogo:
ho 10 caselle di testo nel form; da textbox1 a textbox10
in vb6 con l'indice potevo richiamare la casella di testo ed
assegnarle un testo, es
for i=1 to 10:textbox(i),text=i:next
si può fare qualcosa di simile in NET?
o, detto in altro modo, in funzione di una variabile devo assegnare
un particolare testo ad una casella di testo,
se la mia variabile è 10 devo modificare il testo della textbox10,
come richiamare il controllo?

Luca D

unread,
Jan 3, 2010, 6:42:37 PM1/3/10
to

Aggiungili ad un array o altra collection a tua scelta nel costruttore
della form (dopo InitializeComponents) oppure nell'evento Load

gabriele46

unread,
Jan 17, 2010, 11:45:23 AM1/17/10
to

grazie Luca,
non è stato facile, ma alla fine ci sono riuscito.
per chi avesse i miei problemi di migrazione da vb6 a vb.net ecco come
ho risolto la creazione di una griglia di sudoku con 81 celle ciascuna
col suo indice

Public Class Form1
Dim text1(81) As TextBox

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
Dim i As Integer, inizioX As Integer = 40, inizioY As Integer
= 40, stepX As Integer, stepY As Integer
For i = 1 To 81
Dim newCella As New TextBox
newCella.Name = "cella" + i.ToString()
stepY = Int((i - 1) / 9)
stepX = i - 1 - stepY * 9
newCella.Location = New Point(inizioX + stepX * 41,
inizioY + stepY * 41)
newCella.MinimumSize = New Point(41, 41)
newCella.MaximumSize = New Point(41, 41)
newCella.Size = New Point(41, 41)
newCella.Font = New Font(Font.FontFamily, 14)
newCella.Text = i.ToString()
Controls.Add(newCella)
text1(i) = newCella
AddHandler text1(i).Click, AddressOf Me.text1Click
Next
Me.Refresh()
End Sub

Private Sub text1Click(ByVal sender As TextBox, ByVal e As
System.EventArgs)
Dim indice As String
indice = sender.Text
MessageBox.Show(indice)
End Sub

End Class

0 new messages