Désactiver (griser) une ligne d'une listbox ? [Résolu]

Signaler
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012
-
cs_fabiano13
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012
-
Comment rendre inactive une ligne d'une listbox ?

Du genre :

ListBox1.Items(ListBox1.SelectedIndex()).Enabled = true

D'avance merci.
Fabiano

5 réponses

Messages postés
13281
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
oui
ou SELON L'USAGE, profiter du datasource

Public Class Form1
    Private Class ItemPerso
        Private mValue As String
        Private mEnabled As Boolean

        Public Property Value() As String
            Get
                Return mValue
            End Get
            Set(ByVal value As String)
                mValue = value
            End Set
        End Property

        Public Property Enabled() As Boolean
            Get
                Return mEnabled
            End Get
            Set(ByVal value As Boolean)
                mEnabled = value
            End Set
        End Property

        Public Sub New(ByVal sValue As String, ByVal bEnabled As Boolean)
            mValue = sValue
            mEnabled = bEnabled
        End Sub
    End Class

    Private mListOfItems As New List(Of ItemPerso)
    Private bLoading As Boolean

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For i As Integer = 1 To 300
            mListOfItems.Add(New ItemPerso("Ligne " & i.ToString, ((i Mod 2) = 0)))
        Next
        bLoading = True
        ListBox1.DataSource = mListOfItems
        ListBox1.DisplayMember = "Value"
        bLoading = False
    End Sub

    Private Sub ListBox1_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedValueChanged
        If ListBox1.SelectedIndex <> -1 And Not bLoading Then
            With DirectCast(ListBox1.SelectedValue, ItemPerso)
                If .Enabled Then
                    MessageBox.Show(String.Format("La valeur {0} est sélectionnée", .Value))
                Else
                    'PAS DE CODE, PAS D'ACTION
                    Console.WriteLine("Item {0} désactivé", .Value)
                End If
            End With
        End If
    End Sub
End Class
Messages postés
13281
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
salut,

à ma connaissance ce n'est pas possible
il te reste juste à ne pas agir sur l'action et la condition (position de la ligne)

ou faire ta propre listbox

[hr]
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012

C'est ce que j'ai fait !

Du coup c'est super long.

Merci pour ton aide.
a+
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
25
salut,

il est peut être possible de dériver le controle listbox
et d'ajouter un comportement sur les items de la listbox.

Bon dev.
Messages postés
262
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
27 février 2012

Merci pour votre aide.

Bien à vous deux.
Fabiano