Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131

    VB.NET BackColor e ForeColor item selezionato - Listbox

    Salve a tutti, qualcuno sa come modificare il BackColor e il ForeColor di un item selezionato? (Listbox).
    Grazie in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2015
    Messaggi
    34
    Se ho capito bene : vorresti modificare il backcolor e il forecolor quando viene selezionato un item
    Puoi usare questa formula che uso spesso qui con la listbox:
    codice:
    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
            If ListBox1.SelectedItem = "esempio" Then
                ListBox1.BackColor = tuocolore 'qui inserici il colore della backcolor quando viene selezionato l'item esempio
                ListBox1.ForeColor = tuocolore 'qui inserisci il colore della forecolor quando viene selezionato l'item esempio
            ElseIf ListBox1.SelectedItem = "prova" Then
                ListBox1.BackColor = tuocolore 'qui inserici il colore della backcolor quando viene selezionato l'item prova
                ListBox1.ForeColor = tuocolore 'qui inserici il colore della forecolor quando viene selezionato l'item prova
            End If
        End Sub
    Ciao,spero di averti aiutato.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Quote Originariamente inviata da Paki243 Visualizza il messaggio
    Se ho capito bene : vorresti modificare il backcolor e il forecolor quando viene selezionato un item
    Puoi usare questa formula che uso spesso qui con la listbox:
    codice:
    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
            If ListBox1.SelectedItem = "esempio" Then
                ListBox1.BackColor = tuocolore 'qui inserici il colore della backcolor quando viene selezionato l'item esempio
                ListBox1.ForeColor = tuocolore 'qui inserisci il colore della forecolor quando viene selezionato l'item esempio
            ElseIf ListBox1.SelectedItem = "prova" Then
                ListBox1.BackColor = tuocolore 'qui inserici il colore della backcolor quando viene selezionato l'item prova
                ListBox1.ForeColor = tuocolore 'qui inserici il colore della forecolor quando viene selezionato l'item prova
            End If
        End Sub
    Ciao,spero di averti aiutato.
    mi sono espresso male, quando seleziono un item, la selezione del menu è blu, devo cambiare quello, inoltre devo cambiare anche il colore del testo dell'item selezionato.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2015
    Messaggi
    34
    Scusa,ora ho capito cosa intendi.
    codice:
    Private Sub ListBox1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
            Dim TextItem As String = ListBox1.Items.Item(e.Index).ToString
            If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
                ' Disegno il colore di sfondo nero
                e.Graphics.FillRectangle(New SolidBrush(Color.Black), e.Bounds)
                ' Disegno il testo di colore Rosso e lo metto in grassetto
                e.Graphics.DrawString(TextItem, New Font(e.Font, FontStyle.Bold), New SolidBrush(Color.Red), e.Bounds)
            Else
                ' disegno lo sfondo con il colore di default
                e.DrawBackground()
                ' disegno il testo con il colore di default
                e.Graphics.DrawString(TextItem, e.Font, Brushes.Black, e.Bounds)
            End If
        End Sub
    Per attivarlo o disattivarlo basta che crei 2 button :
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ListBox1.DrawMode = DrawMode.OwnerDrawFixed 'attivo
        End Sub
    codice:
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            ListBox1.DrawMode = DrawMode.Normal 'disattivo
        End Sub
    Se invece vuoi che la modifica si attiva quando si avvia il form,basta che lo metti al load :
    codice:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ListBox1.DrawMode = DrawMode.OwnerDrawFixed 'attivo all'avvio
        End Sub
    Credo che ora era quello che volevi.
    Ultima modifica di Paki243; 05-08-2015 a 17:02

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Quote Originariamente inviata da Paki243 Visualizza il messaggio
    Scusa,ora ho capito cosa intendi.
    codice:
    Private Sub ListBox1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
            Dim TextItem As String = ListBox1.Items.Item(e.Index).ToString
            If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
                ' Disegno il colore di sfondo nero
                e.Graphics.FillRectangle(New SolidBrush(Color.Black), e.Bounds)
                ' Disegno il testo di colore Rosso e lo metto in grassetto
                e.Graphics.DrawString(TextItem, New Font(e.Font, FontStyle.Bold), New SolidBrush(Color.Red), e.Bounds)
            Else
                ' disegno lo sfondo con il colore di default
                e.DrawBackground()
                ' disegno il testo con il colore di default
                e.Graphics.DrawString(TextItem, e.Font, Brushes.Black, e.Bounds)
            End If
        End Sub
    Per attivarlo o disattivarlo basta che crei 2 button :
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ListBox1.DrawMode = DrawMode.OwnerDrawFixed 'attivo
        End Sub
    codice:
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            ListBox1.DrawMode = DrawMode.Normal 'disattivo
        End Sub
    Se invece vuoi che la modifica si attiva quando si avvia il form,basta che lo metti al load :
    codice:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ListBox1.DrawMode = DrawMode.OwnerDrawFixed 'attivo all'avvio
        End Sub
    Credo che ora era quello che volevi.
    grazie mille..

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Per fare la stessa cosa con una listview?

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2015
    Messaggi
    34
    La listview non l'ho mai usata anche perchè non so se si puo fare (la listbox e la listview sono 2 cose diversi),però girando sul sito della Microsoft ho trovato la formula drawitem per la listview.
    codice:
    Imports System.Drawing.Drawing2D
    
    Public Class Form1
    
        Public Event DrawItem As DrawListViewItemEventHandler
        Private Sub ListView1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawListViewItemEventArgs) Handles ListView1.DrawItem
            If Not (e.State And ListViewItemStates.Selected) = 0 Then
    
                ' Draw the background for a selected item.
                e.Graphics.FillRectangle(Brushes.Maroon, e.Bounds)
                e.DrawFocusRectangle()
    
            Else
    
                ' Draw the background for an unselected item.
                Dim brush As New LinearGradientBrush(e.Bounds, Color.Orange, _
                    Color.Maroon, LinearGradientMode.Horizontal)
                Try
                    e.Graphics.FillRectangle(brush, e.Bounds)
                Finally
                    brush.Dispose()
                End Try
    
            End If
    
            ' Draw the item text for views other than the Details view.
            If Not Me.ListView1.View = View.Details Then
                e.DrawText()
            End If
        End Sub
    End Class
    Solo che la formula non l'ho testata quindi non so se funziona al 100%.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Quote Originariamente inviata da Paki243 Visualizza il messaggio
    La listview non l'ho mai usata anche perchè non so se si puo fare (la listbox e la listview sono 2 cose diversi),però girando sul sito della Microsoft ho trovato la formula drawitem per la listview.
    codice:
    Imports System.Drawing.Drawing2D
    
    Public Class Form1
    
        Public Event DrawItem As DrawListViewItemEventHandler
        Private Sub ListView1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawListViewItemEventArgs) Handles ListView1.DrawItem
            If Not (e.State And ListViewItemStates.Selected) = 0 Then
    
                ' Draw the background for a selected item.
                e.Graphics.FillRectangle(Brushes.Maroon, e.Bounds)
                e.DrawFocusRectangle()
    
            Else
    
                ' Draw the background for an unselected item.
                Dim brush As New LinearGradientBrush(e.Bounds, Color.Orange, _
                    Color.Maroon, LinearGradientMode.Horizontal)
                Try
                    e.Graphics.FillRectangle(brush, e.Bounds)
                Finally
                    brush.Dispose()
                End Try
    
            End If
    
            ' Draw the item text for views other than the Details view.
            If Not Me.ListView1.View = View.Details Then
                e.DrawText()
            End If
        End Sub
    End Class
    Solo che la formula non l'ho testata quindi non so se funziona al 100%.
    per attivare il codice?

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2015
    Messaggi
    34
    Mi dispiace per attivare il codice non so;sono solo riuscito a ricavare il codice della drawitem.
    Ho provato a guardare internet ma non trovo niente di interessante riguardo all'attivazione del codice.Ciao.

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Quote Originariamente inviata da Paki243 Visualizza il messaggio
    Mi dispiace per attivare il codice non so;sono solo riuscito a ricavare il codice della drawitem.
    Ho provato a guardare internet ma non trovo niente di interessante riguardo all'attivazione del codice.Ciao.
    grazie lo stesso

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.