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

    Colorare con una sfumatura i ColumnHeaders

    Vorrei colorare il ColumnHeaders di un Datagridview con una sfumatura, ho reso trasparente nella Proprietà ColumnHeadersDefaultCellStyle, poii ho inserito nell'OnLoad della pagina il seguente codice:
    codice:
                ' Dimensiona il Rettangolo con le dimensioni reali del ColumnHeaders.
                Dim TopBounds As New Rectangle(0, 0, _
                    Me.MyDataGridView.Columns.GetColumnsWidth( _
                    DataGridViewElementStates.Visible) - _
                    Me.MyDataGridView.HorizontalScrollingOffset + 1, _
                    Me.MyDataGridView.ColumnHeadersHeight)
    
                ' 
                Dim backbrush As New _
                    System.Drawing.Drawing2D.LinearGradientBrush(TopBounds, _
                    Color.LightGray, _
                    Color.SteelBlue, _
                    System.Drawing.Drawing2D.LinearGradientMode.Horizontal)
                Try
                    Me.Tab_DatiScoutDataGridView.CreateGraphics().FillRectangle(backbrush, TopBounds)
                Finally
                    Me.MyDataGridView.CreateGraphics().Dispose()
                    
                End Try
    ma lo sfondo resta trasparente

  2. #2
    Alla fine qualcosa ho concluso, infatti nell'evento 'Print' del DatagridView ho inserito:
    codice:
        Private Sub Tab_DatiScoutDataGridView_Paint(ByVal sender As System.Object, _
                                                    ByVal e As System.Windows.Forms.PaintEventArgs) _
                                                    Handles Tab_DatiScoutDataGridView.Paint
            MsgBox("1")
            ' Dimensiona il Rettangolo con le dimensioni reali del ColumnHeaders.
            Dim ColumnHeadersArea As New Rectangle(0, 0, _
                Me.Tab_DatiScoutDataGridView.Columns.GetColumnsWidth( _
                DataGridViewElementStates.Visible) - _
                Me.Tab_DatiScoutDataGridView.HorizontalScrollingOffset + 2 + _
                Me.Tab_DatiScoutDataGridView.RowHeadersWidth, _
                Me.Tab_DatiScoutDataGridView.ColumnHeadersHeight)
    
            ' Dimensiona il Rettangolo con le dimensioni reali dell'Area Dati.
            Dim DGVBackArea As New Rectangle(0, _
                Me.Tab_DatiScoutDataGridView.ColumnHeadersHeight, _
                Me.Tab_DatiScoutDataGridView.Width, _
                Me.Tab_DatiScoutDataGridView.Height - Me.Tab_DatiScoutDataGridView.ColumnHeadersHeight)
    
            'Definisce il modo di colorare lo sfondo del ColumnHeaders.
            Dim ColumnHeadersBrush As New _
                System.Drawing.Drawing2D.LinearGradientBrush(ColumnHeadersArea, _
                Color.LightGray, _
                Color.SteelBlue, _
                System.Drawing.Drawing2D.LinearGradientMode.Vertical)
    
            'Definisce il modo di colorare lo sfondo dell'Area Dati
            Dim DGVBackBrush As New _
                System.Drawing.Drawing2D.LinearGradientBrush(DGVBackArea, _
                Color.SteelBlue, _
                Color.LightGray, _
                System.Drawing.Drawing2D.LinearGradientMode.BackwardDiagonal)
    
            Dim ForeColumnHeadersBrush As SolidBrush = Nothing
    
            Dim ForeDGVBackBrush As SolidBrush = Nothing
            MsgBox("2")
            Try
                e.Graphics.FillRectangle(ColumnHeadersBrush, ColumnHeadersArea)
                e.Graphics.FillRectangle(DGVBackBrush, DGVBackArea)
                ForeColumnHeadersBrush = New SolidBrush(Me.Tab_DatiScoutDataGridView.ColumnHeadersDefaultCellStyle.ForeColor)
                ForeDGVBackBrush = New SolidBrush(Me.Tab_DatiScoutDataGridView.RowsDefaultCellStyle.ForeColor)
            Finally
                DGVBackBrush.Dispose()
                ColumnHeadersBrush.Dispose()
                ForeColumnHeadersBrush.Dispose()
                ForeDGVBackBrush.Dispose()
            End Try
        End Sub
    crea perfettamente l'effetto voluto, ma l'intestazione della tabella e i dati della stessa tabella restano visualizzati per pochi attimi: il tempo di terminare il caricamento della tabella.
    Poi scompaiono.

    Dov'è il problema????

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.