Salve a tutti, qualcuno sa come modificare il BackColor e il ForeColor di un item selezionato? (Listbox).
Grazie in anticipo.
Salve a tutti, qualcuno sa come modificare il BackColor e il ForeColor di un item selezionato? (Listbox).
Grazie in anticipo.
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:
Ciao,spero di averti aiutato.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
Scusa,ora ho capito cosa intendi.
Per attivarlo o disattivarlo basta che crei 2 button :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
codice:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListBox1.DrawMode = DrawMode.OwnerDrawFixed 'attivo End SubSe invece vuoi che la modifica si attiva quando si avvia il form,basta che lo metti al load :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
Credo che ora era quello che volevi.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
Ultima modifica di Paki243; 05-08-2015 a 17:02
Per fare la stessa cosa con una listview?
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.
Solo che la formula non l'ho testata quindi non so se funziona al 100%.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
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.