Newsgroup: it.comp.lang.visual-basic
Titolo: Inherits ... troppe priprietà, medoti ed eventi ...

Ho cercato in giro, ma non ho trovato niente.
Se creo una classe che eredita da un'altra classe base tipo:
Public Class MyButton
    Inherits windows.forms.button
    ...
End Class
il "problema" è che non mi servono tutte le proprietà, i metodi e gli eventi
della classe base, c'è il modo di farne visuazlizzare (quando vado ad
utilizzare la mia classe) solo queli che desidero ?
grazie

[NetSlacker](dimenticandosi di citare .net) scrisse:

Scusa la domanda: che significa che non ti servono tutte le proprietà e i metodi
e gli eventi del button? Intendi dire che non ti interessano o che proprio ti
creano dei problemi?
--
Salutoni
Sergio

 ha scritto nel messaggio
news:SkQ6a.155132$YG2.4...@twister1.libero.it...

Non so se sia possibile nasconderli solo all'IntelliSense, ma l'approccio e'
comunque sbagliato.
Se derivi una classe da Button, gli utenti della stessa (altri sviluppatori,
ma anche e soprattutto i componenti stessi del framework) si aspettano che
la classe *sia* un Button, con al piu' le implementazioni interne differenti
e/ dei membri aggiuntivi. I membri esposti devono deve essere lasciati
intatti proprio per il concetto stesso di ereditarieta'... immagina di
assegnare un oggetto MyButton ad un oggetto Button "vero"; siccome la classe
e' derivata l'assegnazione andrebbe a buon fine, peccato che al primo
tentativo di accesso ad un membro da te eliminato, si schianterebbe tutto...
Proprio per queste ragioni il compilatore non ti permette di farlo; se per
esempio provi a derivare la property text, cosi':
'Private, in teoria, dovrebbe nascondere la property all'esterno
Private Overrides Property Text() As String
ricevi subito un errore, in quanto non puoi cambiare il livello di accesso
ad un membro della classe base, e .Text in Button e' Public
se provi invece qualcosa del genere:
Private Shadows Property Text() As String
di nuovo non ottieni quello che vuoi... il codice stavolta compila, ma
quello che succede e' che, dall'interno della classe accedi alla tua Text
privata, ma all'esterno questa non viene nascosta; semplicemente viene
esposta direttamente quella della classe base.
Morale: se il tuo controllo deve essere *simile* ad un Button, ma non deve
*essere* un Button, allora puoi derivarlo da System.windows.forms.Control o
.UserControl (ma comunque ti becchi parecchi membri anche qui) oppure ancor
piu' genericamente da System.ComponentModel.Component e aggiungere solo
quello che ti serve, viceversa tienilo cosi' che e' del tutto corretto
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

ok scusate, da come mi hai spiegato ora mi sembra palese che sia così.
avrei un altra domanda:
sto costruendo una classe che si chiama Famiglia (con un po di proprietà) e
una collezione che si chiama Famiglie (con funzioni tipo aggiungi famiglia
ecc) che ha degli eventi tipo afterAggiungiFamiglia ecc.
la classe Famiglia fra le proprità ha anche un oggetto Persona che deriva da
una classe che ho creato, che ha a sua volta una collezione Persone
(anch'essa con eventi).
il succo è questo: uso il tutto in una form nelle quale ho inserito:
Public WithEvents myFamilys as new Familys
quindi riesco ad intercettare eventi quando viene eseguito il seguente
codice
Dim F as Family
...
myFamilys.add(F)
ma non so come intercettare eventi del tipo
Dim P as Person
...
myFamilys(0).Persons.add(P)
ciao e scusa per il disturbo

 ha scritto nel messaggio
news:L247a.158199$ZE.46...@twister2.libero.it...



[SNIP]
Ok, fai pure... aheemm, gia' che ci sei: il plurale di Family e' Families
;-)


 Ciao
Forse ho trovato č tutto un gioco di "AddHandler" che a ritroso da:
persona, persone, famiglia, famiglie fa arrivare l'evento.
Io ho risolto cosě se ci sono suggerimenti ...