Nastavení pozadí označené položky v listboxu   zodpovězená otázka

VB.NET, WinForms

Jal nastavit pozadí označené položky v listboxu?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Asi bych si vytvořil vlastní listbox, ale jinak se kreslí v události OnDrawItem při změněném DrawModu.

''' <summary>
''' ListBox s podbarveným výběrem ActiveColor barvou
''' </summary>
''' <remarks></remarks>
Public Class UserListBox : Inherits ListBox

    Public Sub New()
        'Nastavení DrawModu / všechny položky mají stejnou velikost
        Me.DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed
    End Sub

    Protected Overrides Sub OnDrawItem(ByVal e As System.Windows.Forms.DrawItemEventArgs)

        If e.Index = Me.SelectedIndex Then
            'jiné pozadí
            e.Graphics.FillRectangle(New SolidBrush(Me.ActiveColor), e.Bounds)
        Else
            'standardní vykreslení pozadí položky
            e.DrawBackground()
        End If

        'vykreselní textu
        e.Graphics.DrawString(Me.Items(e.Index).ToString(), _
        e.Font, New SolidBrush(Me.ForeColor), e.Bounds, StringFormat.GenericDefault)

        MyBase.OnDrawItem(e)
    End Sub

    'Po změně indexu překreslit
    Protected Overrides Sub OnSelectedIndexChanged(ByVal e As System.EventArgs)
        MyBase.OnSelectedIndexChanged(e)
        Me.Invalidate()
    End Sub

    'Barva vybraného itemu
    Private _activeColor As Color
    Public Property ActiveColor() As Color
        Get
            Return Me._activeColor
        End Get
        Set(ByVal value As Color)
            Me._activeColor = value
            Me.Invalidate()
        End Set
    End Property

End Class

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback