Per usercontrol intendevo proprio... usercontrolOriginariamente inviato da eternauta
alla fine ho risolto cosi (vedi codice).. ma ho alcune domande.
- quando ci si riferisce a usercontrol, si parla di un controllo creato da codice (come in questo caso time_base che è dichiarato prima con dim time_base as new panel), o è un controllo costruito ad hoc partendo dai controlli base?
Lo puoi aggiungere al progetto col menu Project/Add User Control.
Una volta compilato il progetto ti ritroverai una nuova icona nella toolbox che ti permetterà di inserire il tuo nuovo controllo nel form, allo stesso modo con il quale inserisci tutti gli altri controlli predefiniti di VB.
Come ti ho già accennato nel messaggio precedente, io sposterei tutta la complessità del disegno della griglia e dei box all'interno dello usercontrol. Eviterei di usare, all'interno dello usercontrol, ulteriori componenti (Label ecc.) ma lascerei fare tutto all'evento Paint usando le primitive messe a disposizione dall'oggetto Graphics (linee, sfondi, testi, ecc.). Devi ovviamente progettare una serie di proprietà con le quali il form che ospita il tuo usercontrol possa interagire con esso. Ecco un abbozzo di usercontrol:
Nel tuo form sarà necessario definire alcune proprietà, esempio:codice:Public Class GrigliaProgrammi Private _canali As Canali Public ReadOnly Property Canali() As Canali Get Return _canali End Get End Property Public Sub New() ' This call is required by the designer. InitializeComponent() ' Add any initialization after the InitializeComponent() call. _canali = New Canali End Sub Private Sub GrigliaProgrammi_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint 'disegna la timeline '... 'disegna le righe dei canali If _canali.Count > 0 Then For Each c As Canale In _canali 'disegna box con il nome del canale '... 'disegna i box dei vari programmi For Each ev As Evento In c.Eventi '... Next Next End If End Sub End Class Public Class Canale Private _eventi As Eventi Public Property ID As Integer Public Property Descrizione As String Public ReadOnly Property Eventi As Eventi Get Return _eventi End Get End Property Public Sub New() _eventi = New Eventi End Sub End Class Public Class Canali Inherits List(Of Canale) End Class Public Class Evento Public Property Titolo As String Public Property Inizio As Date Public Property Fine As Date Public Sub New() ' End Sub Public Sub New(titolo As String, inizio As Date, fine As Date) Me.Titolo = titolo Me.Inizio = inizio Me.Fine = fine End Sub End Class Public Class Eventi Inherits List(Of Evento) End Class
codice:Dim c As Canale Dim ev As Evento c = New Canale c.ID = 1 c.Descrizione = "TeleDico" ev = New Evento("TG24", New Date(2011, 6, 29, 10, 0, 0), New Date(2011, 6, 29, 10, 15, 0)) c.Eventi.Add(ev) ev = New Evento("Oroscopo", New Date(2011, 6, 29, 10, 12, 0), New Date(2011, 6, 29, 10, 18, 0)) c.Eventi.Add(ev) GrigliaProgrammi1.Canali.Add(c)


Rispondi quotando