none
Inhalt Combobox mit Key RRS feed

  • Frage

  • Hallo,

    ich habe Comboboxen in denen ich Inhalte von Enum zuweise.

    z.B:

       Private Enum text
           Textdatei = 0
            Exceldatei = 1
        End Enum

    nun will ich die Inhalte auch mit dem Wert z.B. 1 aufrufen.

    Wie kann ich das realisieren?

    Gruß

    Norbert

    Dienstag, 6. September 2011 11:19

Antworten

  • Hallo Thomas,
    

     

    DANKE

    ich habe noch eine Frage, wie kann ich die z.B. Combobox mit dem Wert 1 auf die Anzeige Exceldatei setzen?

    Ich will im Code mit der Nummer die Anzeige der Combobox verändern.

     

    Gruß

    Norbert

     


    Das sollte so gehen

    Me.cb.Items.AddRange([Enum].GetNames(GetType(emText)))
    '// Nach Zuweisung aller Enum-Werte die SelectedItem Eigenschaft setzen
    Me.cb.SelectedItem = [Enum].GetName(GetType(emText), emText.Exceldatei)

    Aber beherzige den Hinweis von Elmar, lieber etwas mehr Zeit investieren um ein sicheres und lesbares Konstruct zu schaffen und mit Strukturen und Klassen arbeiten als die schnelle Lösung die mehr verwirrt, und durch das viele "Casten" unübersichtlich ist.

    '// Definition deiner eigenen Struktur
    Public Structure emText
      Private strWert as String
      Private intKey as Integer
      '
      Sub New(ByVal Wert as String, ByVal Key as Integer)
         strWert=Wert
         intKey=Key
      End Sub
      '
      Public ReadOnly Property Wert as String
        Get
          Return strWert
        End Get
       End Property
      '
      Public ReadOnly Property Key as Integer
        Get
           Return intKey
        End Get
      End Property
      '
      Public Overrides Function ToString as String
         Return "Eintrag " & strWert
      End Function
      '
    End Structure
    '// Initialisieren der Liste und der Combobox 
    Private myListWert as new List(Of emText)
    Private myCB as new ComboBox
    '// Deiner Liste die Werte zuweisen
    myListWert.Add(New emText("Exceldatei", 0))
    myListWert.Add(New emText("TextDatei", 1))
    '// Die ComboBox an die Liste binden.
    myCB.DisplayMember = "Wert"
    myCB.ValueMember = "Key"
    myCB.DataSource = myListWert
    
    

    Gruß Norbert

    • Als Antwort markiert N-Lutz Mittwoch, 7. September 2011 18:06
    Dienstag, 6. September 2011 21:15
  • Hallo zusammen,

     

    DANKE für die Hilfe

     

    Gruß

    Norbert

    • Als Antwort markiert N-Lutz Mittwoch, 7. September 2011 06:53
    Mittwoch, 7. September 2011 06:53

Alle Antworten

  • Hallo Norbert

    Private Enum [emText]
      Textdatei = 0
      Exceldatei = 1
    End Enum
    '
    Private cb as new ComboBox
    '
    Private Sub DeinForm_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        '//
        Try
          '//
          Me.cb.Items.AddRange([Enum].GetNames(GetType(emText)))
          '//
        Catch ex As Exception
    
        End Try
        '//
    End Sub
    '
    Private Sub cb_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles cb.SelectedValueChanged
      '//
      If cb.SelectedItem is Nothing = False Then
        Select Case CType([Enum].Parse(GetType(emText), CStr(cb.SelectedItem)), emText)
          Case emText.Exceldatei
            '// Tue irgendwas
          Case emText.Textdatei
            '// Tue irgendwas anderes
          Case Else 
            '// sollte nicht vorkommen
        End Select
      End If
      '//
    End Sub
    

    Musst du mal probieren sollte so in etwa funktionieren. Ich weiss nur nicht aus dem Kopf welches Ereigniss der Combobox da besser anschlägt.

    Gruß Thomas  

    Dienstag, 6. September 2011 14:39
  • Hallo Thomas,

     

    DANKE

    ich habe noch eine Frage, wie kann ich die z.B. Combobox mit dem Wert 1 auf die Anzeige Exceldatei setzen?

    Ich will im Code mit der Nummer die Anzeige der Combobox verändern.

     

    Gruß

    Norbert

     

    Dienstag, 6. September 2011 16:07
  • Hallo Norbert,

    beim Weg den Thomas beschreibt, verwaltet die ComboBox die Texte, also Zeichenketten.
    Deswegen musst Du den jeweils den Wert in die Zeichenkette übersetzen, was z. B.
    Enum.GetName-Methode für einen Wert macht.
    So wie das von Thomas gezeigte GetNames alle möglichen Zeichenketten liefert.

    Einen etwas komplexeren Weg (und den Ratschlag nicht direkt mit Enums zu arbeiten) findest Du in:
    Type-Probleme bei der Zuweisung von SelecetedValue an Combobox

    Gruß Elmar

    Dienstag, 6. September 2011 19:38
    Beantworter
  • Hallo Thomas,
    

     

    DANKE

    ich habe noch eine Frage, wie kann ich die z.B. Combobox mit dem Wert 1 auf die Anzeige Exceldatei setzen?

    Ich will im Code mit der Nummer die Anzeige der Combobox verändern.

     

    Gruß

    Norbert

     


    Das sollte so gehen

    Me.cb.Items.AddRange([Enum].GetNames(GetType(emText)))
    '// Nach Zuweisung aller Enum-Werte die SelectedItem Eigenschaft setzen
    Me.cb.SelectedItem = [Enum].GetName(GetType(emText), emText.Exceldatei)

    Aber beherzige den Hinweis von Elmar, lieber etwas mehr Zeit investieren um ein sicheres und lesbares Konstruct zu schaffen und mit Strukturen und Klassen arbeiten als die schnelle Lösung die mehr verwirrt, und durch das viele "Casten" unübersichtlich ist.

    '// Definition deiner eigenen Struktur
    Public Structure emText
      Private strWert as String
      Private intKey as Integer
      '
      Sub New(ByVal Wert as String, ByVal Key as Integer)
         strWert=Wert
         intKey=Key
      End Sub
      '
      Public ReadOnly Property Wert as String
        Get
          Return strWert
        End Get
       End Property
      '
      Public ReadOnly Property Key as Integer
        Get
           Return intKey
        End Get
      End Property
      '
      Public Overrides Function ToString as String
         Return "Eintrag " & strWert
      End Function
      '
    End Structure
    '// Initialisieren der Liste und der Combobox 
    Private myListWert as new List(Of emText)
    Private myCB as new ComboBox
    '// Deiner Liste die Werte zuweisen
    myListWert.Add(New emText("Exceldatei", 0))
    myListWert.Add(New emText("TextDatei", 1))
    '// Die ComboBox an die Liste binden.
    myCB.DisplayMember = "Wert"
    myCB.ValueMember = "Key"
    myCB.DataSource = myListWert
    
    

    Gruß Norbert

    • Als Antwort markiert N-Lutz Mittwoch, 7. September 2011 18:06
    Dienstag, 6. September 2011 21:15
  • Hallo zusammen,

     

    DANKE für die Hilfe

     

    Gruß

    Norbert

    • Als Antwort markiert N-Lutz Mittwoch, 7. September 2011 06:53
    Mittwoch, 7. September 2011 06:53
  • Hallo Norbert,

     

    bitte markiere die Antwort(en) als Antwort. Siehe:

    Ø  Lösungsbeiträge als „Die Antwort“ markieren
    Bitte markieren Sie den Beitrag, der zur Lösung geführt hat, als "Die Antwort". Durch Bewerten eines Beitrags als "Die Antwort" können andere Teilnehmer die Lösung schneller finden. Außerdem können Sie dem Benutzer, der die Antwort eingereicht hat, für seinen Beitrag danken und zur Steigerung der Antwortqualität in der Diskussionsgruppe beitragen.
    [Quelle: Forenregeln]


    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/
    Mittwoch, 7. September 2011 07:06