Oppure

Loading
22/04/11 23:28
Phil93
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:

Public ReadOnly Property Items As ControlCollection
        Get
            Return Me.Controls
        End Get
End Property


Protected Overrides Sub OnControlAdded(ByVal e As System.Windows.Forms.ControlEventArgs)
        MyBase.OnControlAdded(e)
        Me.Invalidate()
    End Sub

Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        MyBase.OnPaint(e)
        For I = 0 To Me.Controls.Count - 1
            Dim B As Button = DirectCast(Me.Controls(I), Button)
            With B
                ' Varie operazioni per impostare l'aspetto dei Button.
            End With
        Next
    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 22/04/11 23:43
aaa
23/04/11 9:11
Il Totem
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.
aaa