Newsgroup: it.comp.lang.visual-basic
Titolo: Controllo utente, rendere pubbliche le proprietà dei controlli contenuti.

Chiedo scusa se l'argomento è già stato trattato, ma non sono riuscito
a trovare niente cercando nei post precedenti.
Sto usando Visual Basic 2010 Express e mi trovo nella necessità di
aggiungere 2 proprietà ad una TextBox. Quindi ho avviato un nuovo
progetto di libreria di classi, ho aggiunto un nuovo controllo utente,
nella finestra di progettazione ho aggiunto una textbox ed ho scritto
il codice per aggiungere le 2 nuove proprietà che mi occorrono.
Fin qui tutto bene, quello che vorrei è che tutte le altre proprietà
della text box (text, font, textalign, etc.) siano accessibili dal
programma dove utilizzerò, il mio controllo. La via più semplice per
me e quella di riscrivere tutte le proprietà che mi occorrono nel
codice del mio controllo e poi trasferirle alla text box, ma vorrei
sapere se esiste un'altro metodo che mi risparmi un pò di lavoro.
Grazie per avermi letto fin qui
Ciao
Gianluca

 sapere se esiste un'altro metodo che mi risparmi un pņ di lavoro.
Puoi creare una classe con
    Public Class MyTextBox
        Inherits TextBox
' aggiungi le tue proprietą
    End Class

     End Class
Caspita che rapidità!!!
Ci avevo già provato, ma non mi riconosce la parola textbox. Penso che
devo aggiungere nei riferimenti qualcosa, ma non so cosa.

 devo aggiungere nei riferimenti qualcosa, ma non so cosa.
System.Windows.Forms.TextBox
Conviene sempre estendere un controllo imho. Lo puoi lasciare base, poi ci
aggiungi funzionalità quando serve, esempio il colore di sfondo al focus o
validazione dei dati.
Una volta fatto devi compilare, poi puoi aggiungerlo al progetto.

 Una volta fatto devi compilare, poi puoi aggiungerlo al progetto.
Scusami se abuso della tua pazienza.
Ho fatto come mi hai detto, ma continua a non permettermi di inserire
la riga che mi hai indicato. Mi dà il seguente errore:
La classe base 'System.Windows.Forms.TextBox' specificata per la
classe 'TextBoxGO' non può essere differente dalla classe base
'System.Windows.Forms.UserControl' di uno degli altri tipi parziali.

 'System.Windows.Forms.UserControl' di uno degli altri tipi parziali.
Allora aggiungi un modulo di classe (Non un controllo utente) e scrivi:
    Public Class MyTextBox
        Inherits System.Windows.Forms.TextBox
	' aggiungi le tue proprietà
    End Class
Se compili poi lo puoi vedere disponibile e trascinabile sui form.

"Andrea [Work]" <andrea.isw...@gmail.invalid> ha scritto nel 
messaggio news:68i7bcn308j2.1x...@40tude.net...

Ho provato anche questo sistema, ma non sono riuscito poi a visualizzarlo 
all'interno del progetto.
Per il momento ho risolto utilizzando la classe usercontrol al posto della 
textbox, qualche proprietà me la mostra già, le altre le creo io, ma in 
questo modo non sono molte quelle che devo aggiungere.
Grazie mille ancora per l'aiuto
Ciao
Gianluca

 all'interno del progetto.
Come ti ho detto devi compilare prima di poterlo vedere.
E poi eventualmente dai componenti lo cerchi e lo aggiungi. Lo vedrai come
un ingranaggio viola
Prova a vedere questo per capirci:
http://nuke.vbcorner.net/Progetti/VBNET/CustomComponentsVB2008/tabid/109/Default.aspx



ho cercato di farlo in vb 2008 express
ma non trovo la classe component descritta nell'articolo
è un limite della express?

 è un limite della express?
Non so, il concetto è fare un modulo di classe NORMALE, scrivere il codice
con il solo Inherits e compilarla, dovrebbe essere utilizzabile subito la
textbox, altrimenti si prova ad aggiungerla dai componenti.



Ti dico come sto facendo
Apro un nuovo progetto - Libreria di Classi
aggungo il riferimento 
Public Class clsProva
    Inherits System.Windows.Forms.TextBox
End Class
L'errore è 
Tipo 'System.Windows.Forms.TextBox' non definito.	
Ma tu usi una WindowsApplication?

 Ma tu usi una WindowsApplication?
Prova su una WindowApplication, ma io poi le ho spostate anche in una dll e
funzionano (ovviamente per vederle poi nei progetti devi aggiungere da
componenti la dll e spustare i controlli).

 componenti la dll e spustare i controlli).
Guarda grazie al link che mi ha dato Andrea finalmente sono riuscito a 
risolvere.
Namespace ControlliGO
Public Class TextBoxGO
Inherits System.Windows.Forms.TextBox
Ho dovuto inserire il tutto in un nuovo Namespace. Cosě il mio nuovo 
controllo funziona perfettamente prendendo tutti gli attributi di una classe 
textbox.
Quello che adesso non capisco č il perchč...



ok
si può fare anche nativamente su un progetto classLibrary
basta aggiungere nei riferimenti System.Windows.Forms (
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll
)
ciao

 )
Si pu� essere.
Io avevo fatto dei controlli in un progetto. Poi ho spostato tutto in una
class library, e ho dovuto sistemare diverse cose, fra cui probabilmente
anche questa che non ricordavo.