Ciao a tutti,

spero che possiate aitarmi a dipanare questi dubbi:

- Ho un user control in cui voglio inserire tre shape (ma se non si puo anche panel o label) che devono assumere un pò la funzione di semaforo (variano colore in base a determinate condizioni, e se mi ci fermo su con il mouse si dovrebbe attivare un tooltip). Tuttavia se disegno le shape a cerchio non succede niente e se le metto in fase di proggettazione dell'user control quando muovo il controllo (si si sposta e quindi si ridisegna una miriade di volte) questo si sposta all'infinito.. questa è un immagine del controllo che ora uso disegnando delle semplici ellissi:
ctslot control.JPG


- Inoltre se faccio un analisi del codice con vb.net mi dice che non uso il dispose per chiudere i vari pennelli etc. Eppure come potete vedere nel codice li chiudo sempre:

codice:
 Private Sub SlotDraw_paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint

        Dim blackPen As New Pen(Color.Black, 3)
        Dim rect As New Rectangle(0, 0, durata, 50)
        Dim colore As New Color
        Dim StrgFormato As String = ""




        e.Graphics.DrawRectangle(blackPen, rect)
        blackPen.Dispose()



        If Me.Focused = True Then
            Select Case formato
                Case 0
                    colore = Color.LightGray
                    StrgFormato = "3d"

                Case 1
                    colore = Color.LightGray
                    StrgFormato = "Extra"
                Case 2
                    colore = Color.LightGray
                    StrgFormato = "Dgt"
            End Select
            Me.BackColor = Color.LightGray
        Else

            Select Case formato
                Case 0
                    colore = Color.LightGreen
                    StrgFormato = "3d"

                Case 1
                    colore = Color.Cyan
                    StrgFormato = "Extra"
                Case 2
                    colore = Color.Gold
                    StrgFormato = "Dgt"
            End Select

        End If

        Dim myBrush As New SolidBrush(colore)
        e.Graphics.FillRectangle(myBrush, rect)

        mybrush.dispose()


        Dim dur As Integer = durata
        Dim messageFont = New Font("Comic Sans MS", 10, FontStyle.Bold, System.Drawing.GraphicsUnit.Point)
        Dim MiniFont = New Font("Comic Sans MS", 6, FontStyle.Regular, System.Drawing.GraphicsUnit.Point)
        Dim titPoint As New PointF(5, 0)
        e.Graphics.DrawString(titolo, messageFont, Brushes.Black, titPoint)
        Dim inipoint As New PointF(2, 25)
        e.Graphics.DrawString(converti_ore(sender.left), MiniFont, Brushes.Black, inipoint)
        Dim finpoint As New PointF(sender.width / 1.5, 25)
        e.Graphics.DrawString(converti_ore(sender.right), MiniFont, Brushes.Black, finpoint)
        Dim formpoint As New PointF(sender.width / 3, 25)
        e.Graphics.DrawString(StrgFormato, MiniFont, Brushes.Black, formpoint)
        Me.Width = durata
        If Me.Left < 0 Then Me.Left = 0
        Me.inizio = converti_ore(Me.Left)
        Me.fine = converti_ore(Me.Right)
        messageFont.dispose()
        minifont.dispose()

      'parte incriminata l'ovale non viene disegnato l'ellissi che faccio dopo si
        canvas.Parent = Me
        oval1.Size = New System.Drawing.Size(10, 10)
        oval1.Location = New System.Drawing.Point(18, 18)
        oval1.FillColor = Color.Black


        If Me.note <> "" Then
            ToolTip1.SetToolTip(Me, Me.note)
    Dim pancin As New Pen(Color.Peru, 3)
            Dim rect1 As New Rectangle(Me.Width - 20, 18, 5, 5)
            e.Graphics.DrawEllipse(pancin, rect1)
            pancin.Dispose()

        End If

        If Me.note2 <> "" Then
            NoteSala.SetToolTip(Me, Me.note2)
            Dim pancin As New Pen(Color.HotPink, 3)
            Dim rect1 As New Rectangle(Me.Width - 10, 18, 5, 5)
            e.Graphics.DrawEllipse(pancin, rect1)
            pancin.Dispose()
        End If



        
    End Sub