Richiamare controllo creato da codice

venerdì 28 settembre 2012 - 14.12
Tag Elenco Tags  VB.NET

Feroxis Profilo | Junior Member

Poniamo che io abbia un form con un pannello e delle textbox create all'interno tramite form1.panel1.contros.add(mycontrol)
Ogni textbox ha come nome = "txtnome", "txtcognom", ecc
Cliccando un terzo pulsante come faccio ad assegnare ad una variabile in un modulo esterno al form, il valore che sta nella texbox di nome txtnome?

AntCiar Profilo | Expert

ciao.

hai due modi per cercare un controllo:

1 - utilizzare il metodo Find. Dichiarati un array di oggett control e invocando il Find sul pannello ottieni tutti i controlli con il nome "X"

Dim res as Control() = me.panel1.Find("txtnome", true)
if res.lenght > 0 then

...... = res(0)
end if


2 - Scorrere tutti i controlli del panel e confrontare il nome.

Dim i as integer
for i = 0 to me.panel1.controls.count-1
if me.panel1.controls(i).name.Equals("txtnome", StringComparison.InvariantCultureIgnoreCase) then
...... = me.panel1.controls(i)
end if
next


PS: il codice l'ho scritto di pugno quindi sicuramente ci sarà qualche errore di sintassi.

Cristian Barca

Feroxis Profilo | Junior Member

Si ma non riesco a capire come prelevare il camo text dell'oggetto in questione.

AntCiar Profilo | Expert

basta che converti l'oggetto trovato nel suo tipo e hai tutti i metodi.

ad esempio:

Ctype(me.panel1.controls(i), TextBox).text
Cristian Barca

Feroxis Profilo | Junior Member

Vediamo ora:

Ho un form, con un content split panel
dentro al panel 2 c'è un'altro pannello in dockfill chiamato pnlhome


dentro questo pannello: ne creo un'altro

Dim panelgenerato As New Panel
panelgenerato.Dock = DockStyle.Fill
panelgenerato.Name = "PanelGNT"


poi dentro creo della roba tipo
monthcal.Location = location
AddHandler monthcal.DateChanged, AddressOf monthcal_DateChanged
panelgenerato.Controls.Add(monthcal)

labe.Name = "labeldataavv"
labe.Location = location
labe.Text = #1/1/1900#
AddHandler labe.Click, AddressOf labe_click

panelgenerato.Controls.Add(labe)
Form1.TabControl1.TabPages.Item(0).Controls.Add(panelgenerato)
collegati con friends withevents
devo far arrivare la data selezionata nel label
(ora nel label c'è un cdice che tramite msgbox richiama l'indice di riferimento del label che è 3)

poi:
Friend WithEvents monthcal As New System.Windows.Forms.MonthCalendar
Private Sub monthcal_DateChanged(sender As System.Windows.Forms.MonthCalendar, e As System.EventArgs) Handles monthcal.DateChanged
CType(Form1.pnlhome.Controls.(3), Label).Text = sender.SelectionStart.Date
End Sub

Nel label non accade nulla
Per questo chiedo è possibile accede al campo text di una label tramite il nome tipo HTML Collectros GetElementByName??

Feroxis Profilo | Junior Member

Ci sono riuscito dato che erano parecchi oggetti uno dentro l'altro il codeice diventa:
CType(Form1.TabControl1.TabPages(value).Controls(0).Controls(3), Label).Text = sender.SelectionStart
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5