Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [vb.net] mia versione di Groupbox

    ciao a tutti!
    Ho questo problema che, anche con guide, non riesco a risolvere!!!
    Ho realizzato una classe (ereditata da GroupBox), nel quale voglio personalizzare alcune caratteristiche grafiche...a questa, intanto, ho eliminato il vecchio contorno!

    Ho creato una class (UserControl) (dal nome Separator) che disegna le separatorLine (allo stato attuale può crearla tipo Intrusion, Extrusion, sfumata (a più colori)) ...da quì ancora in fase di sviluppo di altri effetti grafici (vediamo cosa mi verrà in mente).

    Vorrei utilizzare la class Separator nel mio GroupBox...così da evitare di scrivere due volte o più, nel caso volessi inserire la Class Separator in altri oggetti personalizzati, gli stessi codici per disegnare una linea separatrice...con il duplice obiettivo di poter avere gli aggiornamenti grafici realizzati nella Class Separator senza dover tutte le volte applicarle manualmente negli altri oggetti in cui ho bisogno di una Linea Separator.

    nel mio Proprety Panel del GroupBox (ereditario) ho ovviamente inretito una cosa del tipo:
    codice:
    Protected m_lineSeparator As SeparatorLine = New SeparatorLine()
    ReadOnly Property Separator() As SeparatorLine
                Get
                    Return m_lineSeparator
                End Get
            End Property
    così posso personalizzare le proprietà costituenti della Linea, cioè aggiungo il pannello di proprietà della linea separator in quella del GroupBox.

    Il problema è da quì!
    ho inserito:
    codice:
            Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    
                'Scrive il Testo del GroupBox.
                ......scrivo il testo (tutto bene)
    
                'Imposta le coordinate del Separator.
                Dim SepX As Integer = 0
                Dim SepY As Integer = CType((sizeF.Height / 2) - (Me.TheLineSeparator.Height / 2), Byte)
                Me.TheLineSeparator.Location = New Point(SepX, SepY)
                '
                'Imposta la Lunghezza del Separator.
                Me.TheLineSeparator.Width = Me.Width - Me.Padding.Left - Me.Padding.Right
                '
                'Imposta il Padding del Separator.
                Me.TheLineSeparator.Padding = New Padding(sizeF.Width + Me.Padding.Left, 0, Me.Padding.Right, 0)
                '
                'Inserisce nel GroupBox il Separator.
                Me.Controls.Add(Me.TheLineSeparator)
    
                SetStyle(ControlStyles.AllPaintingInWmPaint, True)
                SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
                SetStyle(ControlStyles.SupportsTransparentBackColor, True)
                SetStyle(ControlStyles.ResizeRedraw, True)
                Me.BackColor = Color.Transparent
            End Sub
    non da assolutamente alcun errore, anzi funziona bene e disegna quello di cui ho bisogno ma anche dopo aver modificato le caratteristiche della linea (da pannello del Groupbox) le caratteristiche della linea non cambia pur essendo presenti nel Designer della pagina in cui ho messo la MiaGroupBox.

    Cosa non ho inserito???

  2. #2

    Modifiche linea: Problema risolto!

    Problema risolto!
    codice:
            Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    
                'Scrive il Testo del GroupBox.
                Dim brush As SolidBrush = New SolidBrush(Me.ForeColor)
                Dim sizeF As SizeF = e.Graphics.MeasureString(Me.Text, Me.Font)
                Dim pointF As PointF = New Point(0, 0)
                e.Graphics.DrawString(Me.Text, Me.Font, brush, pointF)
                brush.Dispose()
                '
                '
                'Disegna il Separator (SeparatorLine).
                '
                'Imposta le coordinate del Separator.
                Dim SepX As Integer = sizeF.Width
                Dim SepY As Integer = CType((sizeF.Height / 2) - (Me.Separator.Height / 2), Byte)
                Me.Separator.Location = New Point(SepX, SepY)
                '
                'Imposta la Lunghezza del Separator.
                Me.Separator.Width = Me.Width - sizeF.Width - 2
                '
                'Me.Separator.pa
                Me.Controls.Add(Me.Separator)
                '
                '
                'Imposta il valore specificato per il bit di stile.
                SetStyle(ControlStyles.AllPaintingInWmPaint, True)
                SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
                SetStyle(ControlStyles.SupportsTransparentBackColor, True)
                SetStyle(ControlStyles.ResizeRedraw, True)
                Me.BackColor = Color.Transparent
            End Sub

  3. #3
    mi sapreste dire come posso ordinare per gruppo le proprità della class importata??? al momento me le inserisce in ordine di Nome malgrado che le proprietà della Mia GroupBox sia ordinanta per Categoria!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.