Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Suggerimenti per UserControl (lista di Button)
Forum - C# / VB.NET - [VB.NET] Suggerimenti per UserControl (lista di Button)

Avatar
Phil93 (Normal User)
Pro


Messaggi: 85
Iscritto: 26/01/2011

Segnala al moderatore
Postato alle 1:28
Sabato, 23/04/2011
Ciao.
Avrei bisogno di creare un controllo personalizzato che mi permetta di gestire una lista di Button (per capirci, nel modo in cui una ListBox gestisce le stringhe).

Per fare ciò ho incapsulato la proprietà Controls del controllo, in questo modo:

Codice sorgente - presumibilmente VB.NET

  1. Public ReadOnly Property Items As ControlCollection
  2.         Get
  3.             Return Me.Controls
  4.         End Get
  5. End Property
  6.  
  7.  
  8. Protected Overrides Sub OnControlAdded(ByVal e As System.Windows.Forms.ControlEventArgs)
  9.         MyBase.OnControlAdded(e)
  10.         Me.Invalidate()
  11.     End Sub
  12.  
  13. Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  14.         MyBase.OnPaint(e)
  15.         For I = 0 To Me.Controls.Count - 1
  16.             Dim B As Button = DirectCast(Me.Controls(I), Button)
  17.             With B
  18.                 ' Varie operazioni per impostare l'aspetto dei Button.
  19.             End With
  20.         Next
  21.     End Sub



Il problema è che con questo codice, quando vado ad aggiungere controlli modificato la proprietà Items in fase di design, mi si presenta una InvalidCastException del tipo Control sul tipo Button.
Dove sto sbagliando? Inoltre, è questo il modo giusto di procedere per ottenere il mio scopo?

Grazie

Ultima modifica effettuata da Phil93 il 23/04/2011 alle 1:43
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
1
Down
V
Segnala al moderatore
Postato alle 11:11
Sabato, 23/04/2011
Basta che usi un DirectCast per vedere Button attraverso la sua classe base Control.
Comunque non è necessario che ti disturbi tanto. Esistono già controlli del genere, ad esempio FlowLayoutPanel, StackPanel o anche un semplice Panel.

Non sapevo dell'esistenza del FlowLayoutPanel e dello Stack Panel. Ora ci do un occhiata. Grazie - Phil93 - 23/04/11 12:22


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM