2010-09-29 7 views
0

Je souhaite ajouter manuellement deux éléments comme "Actif" et "Inactif" dans un contrôle ListBox. Lorsque l'utilisateur sélectionne "Actif", je veux obtenir la valeur "A" et quand "Inactif" est sélectionné, je veux obtenir "Je".Zones de liste dans VB.NET

Comment procéder dans VB.NET.

+0

de ASP.NET? Winforms? WPF? –

Répondre

1

Utilisez-vous .NET 4? Si oui, la solution la plus simple est probablement d'utiliser Tuple(Of String, String). Créez un tuple de ("Actif", "A") et un autre de ("Inactif", "I") et ajoutez-les à la liste. Définissez ensuite la propriété DisplayMember de la zone de liste sur "Item1" et ValueMember sur "Item2".

Ou vous pourriez faire le même genre de chose avec un type anonyme.

+0

Cher Jon, merci pour la réponse. En fait, j'ai une liste invisible avec des données peuplées à partir d'une procédure stockée et je l'ai rempli en définissant le DataSource. De même, ces éléments, je veux qu'il soit peuplé dans la deuxième zone de liste en utilisant items.add. L'exigence est que je peux utiliser la deuxième zone de liste pour supprimer des éléments en cliquant sur un bouton parce que les éléments ne peuvent pas être supprimés d'une zone de liste à laquelle les données sont remplies à l'aide de DataSource. Veuillez nous conseiller –

+1

@George: Je ne vois pas comment votre description supplémentaire est pertinente pour le texte actuel de votre question, ni pourquoi vous avez besoin d'une liste invisible pour commencer. S'il vous plaît modifier votre question avec beaucoup plus de contexte. (Vous n'avez même pas dit si c'est WPF, WinForms, ASP.NET etc.) –

+0

Cher Jon, je travaille avec VB.NET [Windows Forms] et c'est une application de bureau. J'ai rempli une zone de liste en utilisant des procédures stockées et en définissant la propriété datasource de la zone de liste pour obtenir les informations renvoyées à partir d'une procédure stockée. Non, il y a un bouton appelé "Supprimer" et quand je sélectionne un élément de la zone de liste et cliquez sur "Supprimer", l'élément doit être supprimé. J'ai essayé "ListBox1.Items.RemoveAt (ListBox1.SelectedIndex), mais il renvoie une erreur. Maintenant, ce que je fais est que, lorsque la première zone de liste est remplie, je veux un autre aussi être peuplé en utilisant Items.Add, donc je pouvez le supprimer –

0

La ListboxItemCollection est de type Object. Vous pouvez créer un ListItem personnalisé comme celui-ci

Public Class Form1 

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     BindListBox() 
    End Sub 

    Private Sub BindListBox() 
     With ListBox1 
      .Items.Add(New CustomListItem("Acitve", "A")) 
      .Items.Add(New CustomListItem("Inactive", "I")) 
      .DisplayMember = "Text" 
     End With 
    End Sub 

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged 
     MsgBox(CType(ListBox1.SelectedItem, CustomListItem).Value) 
    End Sub 

End Class 


''Custom ListItem Class 
Public Class CustomListItem 
    Dim _text As String 
    Dim _value As String 

    Sub New(ByVal text As String, ByVal value As String) 
     Me._text = text 
     Me._value = value 
    End Sub 

    Public ReadOnly Property Text() As String 
     Get 
      Return _text 
     End Get 
    End Property 

    Public ReadOnly Property Value() As String 
     Get 
      Return _value 
     End Get 
    End Property 
End Class 
0

Une option simple

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged 
    Debug.Print(ListBox1.Items(ListBox1.SelectedIndex).ToString.Substring(0, 1)) 
End Sub 
Questions connexes