User Controls puo accedere ad oggetti "del padre" ??

giovedì 01 novembre 2012 - 12.26
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010

danielsan27 Profilo | Newbie

Faccio prima a chiarire un esempio...

Pagina 1: ho una tabella e sopra ad essa il mio bel user control con proprietà visible impostato a false (quindi nn si vede)

Ora...se premo un tasto, nascondo la mia tabella e mostro il mio usercontrol..rispettivmaente impostando table1.visibile = false e userctrl1.visible = true...

Fin qui tt bene...

Ora vorrei far il contrario: nel mio user control che ora si vede c'e un pulsante...e se lo premo voglio (vorrei) che la mia tabella riapparisse e lo usercotnrol si nascondesse...

per nascondere l'user control è facile...basta che nell'evento click del pulsante metto visible = false....MA LA TABELLA???????? dal codice dell'usercontrol...ovviamente l'oggetto "table1" non risulta accessibile....come faccio a farlgielo vedere?????

ringrazio

Gluck74 Profilo | Guru

concettualmente è sbagliato che dall'interno dello UC vuoi modificare qualcosa all'esterno.
Come dovrebbe fare a sapere in quale pagina è inserito? Non sarebbe più uno UC se lo personalizzi per una unica pagina.

Viceversa il controllo della situazione lo dovrebbe avere la pagina stessa. Del resto la tabella e lo UC sono suoi... giusto?

Quello che dovresti fare è esporre pubblicamente il pulsante in modo che la pagina abbia accesso ai suoi eventi, e da codice tu puoi agganciare un delegate (un metodo in sostanza) al click del bottone, come faresti per un normalissimo bottone dentro la pagina. esempio di codice dentro la pagina:
this.myUserControl.BottoneInterno.Click += BottoneInterno_Click; //C#5 ... ... protected void Button1_Click(object sender, EventArgs e) { ... }

Se vuoi fare una cosa ancora più raffinata (e corretta), non esponi nemmeno il pulsante, lo mantieni incapsulato nell'UC. Esponi un evento invece, ad esempio Closing o Hiding.
Quindi dentro lo UC, gestisci il codice interno (tutto quello che devi fare, compreso renderlo non visibile) e poi lanci l'evento, che sarà catturato dalla pagina.
La pagina, quando cattura l'evento, fa quello che deve fare (e lo deve sapere solo lei, nessun altro, tantomento il controllo, come ti ho spiegato prima), come ad esempio nascondere la tabella.

ciao
____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
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