Feedback

VB - ListBox/ComboBox und Enum - Füllen, selektieren, auslesen

Veröffentlicht von am 3/14/2008
(1 Bewertungen)
Code um die Daten zwischen einem Enum und einer ListBox auszutauschen.
class whatever()
    Enum TraceEventType
        Nummer1 = 2 ^ 0
        Nummer2 = 2 ^ 1

    End Enum


sub load()

'ListBoxLogLevel ist eine ListBox im Formular      mit dem 
SelectionMode = MultiSimple
'TraceEventType ist der EnumTyp

'Die Daten des Enums in die Listbox bringen:  
ListBoxLogLevelDB.Items.AddRange([Enum].GetNames(GetType(TraceEventType)))


'Die in test gespeicherten Enum-Daten in der listbox selektieren

Dim test As TraceEventType = TraceEventType.Error Or TraceEventType.Information

Dim ItemsToSelect As New Collection

'ListBox durchlaufen
For Each ListItem In ListBoxLogLevelDB.Items
            'EnumEntry = EnumEntry Or [Enum].Parse(GetType(TraceEventType), item.text)
            If (test And [Enum].Parse(GetType(TraceEventType), ListItem.ToString)) >= 1 Then
                ItemsToSelect.Add(ListItem)
            End If
        Next

'Die Elemente wirklich selektieren
        For Each item In ItemsToSelect
            ListBoxLogLevelDB.SelectedItems.Add(item)
        Next


'Den Handler erst jetzt aktivieren, damit er beim Schritt vorher nicht immer reinspringt
        AddHandler ListBoxLogLevelDB.SelectedValueChanged, AddressOf ListBoxLogLevelDB_SelectedValueChanged

    End Sub

'Die selektierten ListBox-Einträge auslesen
    Private Sub ListBoxLogLevelDB_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs)


        Dim EnumEntry As New TraceEventType

'Die Listbox durchlaufen
        For Each item In ListBoxLogLevelDB.SelectedItems
            EnumEntry = EnumEntry Or [Enum].Parse(GetType(TraceEventType), item.ToString)
        Next

        Debug.WriteLine(EnumEntry.ToString)

    End Sub

end class
Abgelegt unter vb.net, enum, enumeration, listbox.

1 Kommentare zum Snippet

Günther Foidl schrieb am 12/5/2008:
Eine Enum kann als DataSource gebunden werden mit

myListBox.DataSource = [Enum].GetValues(GetType(MyEnum))

Dabei wird GetValues anstatt GetNames verwendet.
 

Logge dich ein, um hier zu kommentieren!