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!!