ok.. ho capito il suggerimento di Tas e ho dedicato tutto oggi (non ho dato da mangiare neanche ai gatti) per capire come costruire un usercontrol che mi aiutasse. Ho capito che se riesco a proggettarli bene, infatti me ne servirà un'altro oltre a questa griglia temporale (quello che tas indica come evento), i miei problemi si ridurranno notevolmente e in fondo, come diceva la mi prof di informatica, per imparare ci devi sbattere la testa .

quindi ho buttato giù questo:

codice:
Imports System.Drawing.Drawing2D

'questo è il mio user control.
<Serializable()> _
Public Class griglia
    Public _numero_sale As Integer
    Dim _capienza As Int32
    Dim _s3d As Boolean, _sdg As Boolean, _s35mm As Boolean



    

    Public Sub New()
'questo lo metto perchè lo ha messo tas. è questo il costruttore?
        InitializeComponent()
    End Sub

    Public Property numero_sale As Integer
        Get
            Return _numero_sale
        End Get
        Set(ByVal value As Integer)
            _numero_sale = value
        End Set
    End Property

    Public Property capienza() As Int32
        Get
            Return _capienza
        End Get
        Set(ByVal value As Int32)
            If value > 0 Then
                _capienza = value
            End If
        End Set
    End Property

    Property s3d() As Boolean
        Get
            Return _s3d
        End Get
        Set(ByVal value As Boolean)
            _s3d = value
        End Set
    End Property

    Property sdg() As Boolean
        Get
            Return _sdg
        End Get
        Set(ByVal value As Boolean)
            _sdg = value
        End Set
    End Property

    Property s35mm() As Boolean
        Get
            Return _s35mm
        End Get
        Set(ByVal value As Boolean)
            _s35mm = value
        End Set
    End Property

    Private Sub Griglia_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        'disegna la timeline
        '...
        Dim p As New Pen(Brushes.Peru, 3)
        Dim y As Integer
        p.DashStyle = DashStyle.DashDotDot
        For i = 60 To 1440
            e.Graphics.DrawLine(p, i, 0, i, 1000)
            i = i + 60
        Next
        y = 5
'ora, vorrei disegnare un rettangolo (quello che prima era il panel) ogni tre pixel tanti quante sale sono..
        For i = 0 To numero_sale - 1
y+=3
            e.Graphics.DrawRectangle(Pens.Maroon, 5, y, 50, 1440)
            y += 50
        Next
    End Sub
End Class
ecco i miei problemi:

- cosi come è, quando metto il controllo non crea nessun rettangolo per sala.. certo! le sale glielo posso comunicare solo da codice (io non so prima quante sale deve gestire l'utente finale). Allora, seguendo il totem, ho provato a mettere una proprietà parametrizzata:

codice:
Public Sub New(byval numsal)
        InitializeComponent()
        numero_sale=numsal.
    End Sub
ma guai.. appena porto il controllo sul form, vb mi riempie di parolacce.

-altra cosa. in:

codice:
e.Graphics.DrawLine(p, i, 0, i, 1000)
1000 è un valore cosi, tanto per metterci qualcosa (la mia prof di info mi avrebbe messo 4) in realtà ci dovrebbe essere il bordo inferiore del controllo.. ma come posso controllare un controllo che non controllo?.. nel senso.. in base al numero di sale l'altezza del controllo varia.. ma griglia.height etc non ha senso per lui!



Insomma.. vi asscuro che ci sto provando, ma se mi accannate lo capirei. Tuttavia sono decisamente migliorato dal primo post.. no?

cmq ragazzi che giornata!!