Vorrei sapere se è possibile controllare da un form padre l'evento Click di un'oggetto Button di un Controllo Utente.
Del tipo passare l'Handles dell'oggetto al form padre in maniera che sia il form padre a controllare l'evento?
grazie a tutti
Vorrei sapere se è possibile controllare da un form padre l'evento Click di un'oggetto Button di un Controllo Utente.
Del tipo passare l'Handles dell'oggetto al form padre in maniera che sia il form padre a controllare l'evento?
grazie a tutti
certo, ma c'è un buon motivo per non fare il metodo button_click public?Originariamente inviato da Adanf
Vorrei sapere se è possibile controllare da un form padre l'evento Click di un'oggetto Button di un Controllo Utente.
Del tipo passare l'Handles dell'oggetto al form padre in maniera che sia il form padre a controllare l'evento?
grazie a tutti
esempio :
codice:public partial class UserControl1 : UserControl { public EventHandler EventClickProperty { get; private set; } public UserControl1() { InitializeComponent(); this.EventClickProperty += new EventHandler(button1_Click); } private void button1_Click(object sender, EventArgs e) { this.BackColor = Color.Black; } } public Form1() { InitializeComponent(); this.userControl1.EventClickProperty(this, new EventArgs()); }
EDIT :
Scusa non avevo visto vb.net![]()
adesso provo se è possibile![]()
si anche in vb.net
e nel formcodice:Partial Public Class UserControl1 Inherits UserControl Public Property EventClickProperty() As EventHandler Get Return m_EventClickProperty End Get Private Set(ByVal value As EventHandler) m_EventClickProperty = Value End Set End Property Private m_EventClickProperty As EventHandler Public Sub New() InitializeComponent() Me.EventClickProperty = New EventHandler(AddressOf button1_Click) End Sub Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Me.BackColor = Color.Black End Sub End Class
ma c'è qualche ragione particolare per farlo?codice:Dim istanza As EventHandler istanza = Me.UserControl11.EventClickProperty istanza(Me, New EventArgs)
giusto per capire![]()
Ecco è questo che mi serviva, creare una variabile per l'handler, non sapevo come farla.Originariamente inviato da U235
si anche in vb.net
e nel formcodice:Partial Public Class UserControl1 Inherits UserControl Public Property EventClickProperty() As EventHandler Get Return m_EventClickProperty End Get Private Set(ByVal value As EventHandler) m_EventClickProperty = Value End Set End Property Private m_EventClickProperty As EventHandler Public Sub New() InitializeComponent() Me.EventClickProperty = New EventHandler(AddressOf button1_Click) End Sub Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Me.BackColor = Color.Black End Sub End Class
codice:Dim istanza As EventHandler istanza = Me.UserControl11.EventClickProperty istanza(Me, New EventArgs)![]()
Ora provo a vedere se riesco ad implementare correttamente il tutto.![]()
Si perchè ho creato un controllo utente personalizzato che controlla una form (con dentro un controllo utente personalizzatoOriginariamente inviato da U235
ma c'è qualche ragione particolare per farlo?
giusto per capire![]()
) e ho una variabile nel primario che deve cambiare quando nel secondario viene premuto un determinato pulsante.
Però il fatto è che il secondario non ha solo un'opzione, quindi volevo che fosse diretamente il primario a gestire gli eventi del secondario. Non so se mi son spiegato![]()
Grazie mille
si, almeno credoOriginariamente inviato da Adanf
Ecco è questo che mi serviva, creare una variabile per l'handler, non sapevo come farla. xD
Ora provo a vedere se riesco ad implementare correttamente il tutto ^^
Si perchè ho creato un controllo utente personalizzato che controlla un'altro controllo utente personalizzatoe ho una variabile nel primario che deve cambiare quando nel secondario viene premuto un determinato pulsante.
Però il fatto è che il secondario non ha solo un'opzione, quindi volevo che fosse diretamente il primario a gestire gli eventi del secondario. Non so se mi son spiegato![]()
Grazie mille![]()
buon lavoro.![]()
Cavoli, non riesco a farlo andare.
Però ho notato una cosa, che queste istruzioni funzionano solo se il controllo utente è direttamente appartenente al form padre, o mi sbaglio?
Forse mi son spiegato male (anzi sicuro) però quello che ho io è:
-un controllo utente personalizzato principale (da ora CUPP);
-nel controllo utente ho creato un'oggetto di una form (la form è in una classe del tipo dll, quindi non eseguibile da sola);
-dentro la form (che viene istanziata nel CUPP) c'è un'altro controllo utente personalizzato secondario (da ora CUPS) con dentro dei controlli standard.
Praticamente cliccando un pulsante in CUPP, compare la form (con dentro CUPS).
Quello che serve a me è poter controllare l'handler di un oggetto dentro CUPS dalla prima CUPP, perchè c'è una variabile nel CUPP che deve essere modificata quando in CUPS viene premuto un pulsante.
Spero ora sia più chiaro e che qualche buon uomo mi riesca ad aiutare.![]()
A mio avviso, per evitare architetture estremamente complesse e arzigogolate, con relativi problemi annessi, suggerisco di approfondire alcuni design pattern, in particolare quelli comportamentali come l'Observer.
Si tratta ovviamente di architetture che devono essere approfondite con un minimo di conoscenza, soprattutto riguardo la programmazione ad oggetti, ma il tempo investito è senz'altro meglio speso rispetto a quello di abbozzare una serie di accrocchi per far comunicare oggetti relazionati tra loro.![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Originariamente inviato da alka
A mio avviso, per evitare architetture estremamente complesse e arzigogolate, con relativi problemi annessi, suggerisco di approfondire alcuni design pattern, in particolare quelli comportamentali come l'Observer.
Si tratta ovviamente di architetture che devono essere approfondite con un minimo di conoscenza, soprattutto riguardo la programmazione ad oggetti, ma il tempo investito è senz'altro meglio speso rispetto a quello di abbozzare una serie di accrocchi per far comunicare oggetti relazionati tra loro.![]()
![]()
sono pienamente d'accordo(per quel che può importartare il mio parere
sicuramente farai le capriole di felicità
)
@Adanf
non vedendo il tuo codice è molto difficile darti una risposta, non tanto per intervenire a livello di codice, ma per capire l'architettura che stai utilizzando, ma da come l'hai descrittta però sembra che i tuoi problemi siano a livello di scittura di codice in se, mentre credo che dovremmo parlare proprio dell'architettura che potresti/dovresti usare in questo caso, da qui si deduce che probabilmente non è quella giusta, o almeno pare![]()
![]()
Il fatto è proprio questo, che non so come implementare correttamente questa cosa, non so quali strutture usare in vb.netOriginariamente inviato da alka
A mio avviso, per evitare architetture estremamente complesse e arzigogolate, con relativi problemi annessi, suggerisco di approfondire alcuni design pattern, in particolare quelli comportamentali come l'Observer.
Beh postare il codice la vedo un pò difficile perchè essendo quasi a fine lavoro (ho tralasciato questa parte dell'implementazione proprio all'ultimo perchè non riuscivo) quindi è lungo e non saprei proprio quale parti postare, per l'architettura fai conto che io arrivo dal c++ quindi ho implementato solo le classi le strutture e le sub, usando il "controllo utente personalissato" per fare i due controlli che mi servivano cercando di rendere i 2 controlli "riutilizzabili" il più possibile.Originariamente inviato da U235
![]()
@Adanf
non vedendo il tuo codice è molto difficile darti una risposta, non tanto per intervenire a livello di codice, ma per capire l'architettura che stai utilizzando, ma da come l'hai descrittta però sembra che i tuoi problemi siano a livello di scittura di codice in se, mentre credo che dovremmo parlare proprio dell'architettura che potresti/dovresti usare in questo caso, da qui si deduce che probabilmente non è quella giusta, o almeno pare![]()
![]()
Più che altro sono gli handler che non riesco a capire e mi sa che in questo caso mi sarebbero utili.
p.s.: ho visto che c'è anche un modello "Form padre MDI", forse può fare al caso mio per implementare finestre multiple e renderle interconnesse (magari è un metodo già fatto per quello che sto facendo io)?
difficile fare un analisi non sapendo nulla del tuo programma, quindi è difficile dire se il "modello form padre MDI" va bene nel tuo caso...
come prima cosa credo sia fondamentale capire lo scopo del programma, poi bisogrerebbe capire le peculiarità che deve avere ecc.
se hai voglia, prova a spiegare meglio il tuo programma, magari a livello concettuale, fornendo tipi, membri, derivazioni, astrazioni, e sopratutto motivazioni.
se poi hai creato qualche diagramma è sempre utile!
comunque, se può esserti utile (da documentazione msdn) :
"I delegati sono simili ai puntatori a funzione del linguaggio C o C++.Essi consentono di incapsulare un riferimento a un metodo in un oggetto delegato.L'oggetto delegato può quindi essere passato al codice, che a sua volta chiama il metodo a cui viene fatto riferimento, anche se il metodo da richiamare risulta sconosciuto in fase di compilazione. A differenza dei puntatori a funzione in C o C++, i delegati sono orientati a oggetti, indipendenti dai tipi e offrono una maggiore sicurezza."
![]()