PDA

View Full Version : [VB .NET] Controlli personalizzati


birmarco
04-11-2012, 19:16
Ciao a tutti :)

Ho una domanda veloce (spero :D ):

ho creato, in un progetto WPF, un controllo personalizzato (chiamiamolo Mario) comprensivo di alcuni Textblock e un pulsante.

Durante l'esecuzione del programma vengono generati automaticamente un numero variabile di Mario chiamati Mario0, Mario1, Mario2 ecc... sono anche inseriti in una List(Of Mario).

Tutti questi Mario sono visualizzati in uno Stackpanel con scroll.

Io vorrei che alla pressione del pulsante contenuto in Mario venisse eseguita una sub del tipo:

Sub chiamataDaMario(valore As String)

dove valore glielo passa il Mario padre del pulsante. Questa sub si deve trovare nella pagina principale dell'applicazione (padre di Mario) perchè ne modifica alcuni aspetti.

Come faccio?

Grazie a tutti :)

[Kendall]
04-11-2012, 19:54
Ciao a tutti :)

Ho una domanda veloce (spero :D ):

ho creato, in un progetto WPF, un controllo personalizzato (chiamiamolo Mario) comprensivo di alcuni Textblock e un pulsante.

Durante l'esecuzione del programma vengono generati automaticamente un numero variabile di Mario chiamati Mario0, Mario1, Mario2 ecc... sono anche inseriti in una List(Of Mario).

Tutti questi Mario sono visualizzati in uno Stackpanel con scroll.

Io vorrei che alla pressione del pulsante contenuto in Mario venisse eseguita una sub del tipo:

Sub chiamataDaMario(valore As String)

dove valore glielo passa il Mario padre del pulsante. Questa sub si deve trovare nella pagina principale dell'applicazione (padre di Mario) perchè ne modifica alcuni aspetti.

Come faccio?

Grazie a tutti :)

Non programmo in VB ma in C#, però il concetto è il medesimo: se un controllo deve estrapolare informazioni dal "padre" allora deve avere un riferimento ad esso. Pertanto ti basta passare un riferimento del padre nel costruttore di ogni componente Mario. (Comportamento che, tra l'altro, è bene o male lo standard per i componenti di un'interfaccia grafica).

birmarco
05-11-2012, 09:57
;38420958']Non programmo in VB ma in C#, però il concetto è il medesimo: se un controllo deve estrapolare informazioni dal "padre" allora deve avere un riferimento ad esso. Pertanto ti basta passare un riferimento del padre nel costruttore di ogni componente Mario. (Comportamento che, tra l'altro, è bene o male lo standard per i componenti di un'interfaccia grafica).

Grazie mille sono riuscito a risolvere! :sofico:

Nel codice del controllo ho inserito

Public FramePadre As Frame

Public Sub setPadre (ByRef FrameP As Frame)
FramePadre = FrameP
End Sub

E poi nell'evento click del pulsante ho semplicemente usato FramePadre per modificarne le proprietà :)

Può essere considerata una buona soluzione? :)

Ho visto che si possono creare nuovi eventi nel padre e sollevarli al click del controllo, ma mi sembra una soluzione molto macchinosa e anche pesante visto che con ad es 20 controlli dovrei creare 20 eventi da gestire. O sbaglio? :)