ComboBox - Nach Eintrag Wert verteilen?

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    ComboBox - Nach Eintrag Wert verteilen?

    Edit by ErfinderDesRades: (Thema verschoben) Bitte richtiges UnterForum wählen!


    Hallo


    Wie kann man überprüfen welcher Eintrag in der ComboBox ausgewählt worden ist, und etwas machen?
    Ich habe eine ComboBox die 3 Einträge hat: Automatisch, Manuell, Aus

    Es soll überprüfen werden welcher Eintrag ausgewählt worden ist, und dementsprechend etwas in eine Textdatei geschrieben werden:
    Automatisch = 1

    wenn Manuell = 2

    oder wenn Aus = 0

    Wie kann man sowas bewerkstelligen? :)
    Bilder
    • ComboBox.jpg

      16,33 kB, 351×208, 91 mal angesehen
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Was hast du versucht? Schonmal Google/MSDN gefragt? Dazu findet sich einhundertprozentig was.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Ich hatte mal ne Klasse für sowas gemacht:

    VB.NET-Quellcode

    1. Public Class Item(Of T)
    2. Public Sub New(text As String, value As T)
    3. Me.Text = text
    4. Me.Value = value
    5. End Sub
    6. Public Property Text As String
    7. Public Property Value As T
    8. Public Overrides Function ToString() As String
    9. Return Text
    10. End Function
    11. End Class

    Wenn du nun ein Item(Of Action) nehmen würdest, könntest du die Action in die Property Value reinpacken und den Text logischerweise in die Text-Property:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. ComboBox1.Items.Add(New Item(Of Action)("A", Sub() Label1.Text = "A"))
    4. ComboBox1.Items.Add(New Item(Of Action)("B", AddressOf B))
    5. End Sub
    6. Private Sub B()
    7. Label1.Text = "B"
    8. End Sub
    9. Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
    10. Dim Action As Action = DirectCast(ComboBox1.SelectedItem, Item(Of Action)).Value
    11. Action()
    12. End Sub
    13. End Class
    Über den Weg einer Enum kann man es so machen:

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Enum Status
    4. Automatik = 1
    5. Manuell = 2
    6. Aus = 0
    7. End Enum
    8. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Shown
    9. ComboBox1.Items.AddRange([Enum].GetNames(GetType(Status)))
    10. ComboBox1.Items.Add("ein falscher Item") 'zum Testen
    11. End Sub
    12. Private Sub cbx_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
    13. Dim txt = DirectCast(sender, ComboBox).Text 'ausgewählte Itemtext der Combobox
    14. If Not [Enum].IsDefined(GetType(Status), txt) Then Return 'sollte zufällig ein falscher Item in die Comboboxlist gerutscht sein...
    15. Dim state = CType([Enum].Parse(GetType(Status), txt), Status) 'der dem Text entsprechende Member von Enum Status
    16. Dim number = CType([Enum].Parse(GetType(Status), txt), Integer) 'der Index vom gewählten Member
    17. Select Case state 'der Auswahl eine Aktion zuweisen
    18. Case Status.Aus : MessageBox.Show(number.ToString, state.ToString)
    19. Case Status.Automatik : MessageBox.Show(number.ToString, state.ToString)
    20. Case Status.Manuell : MessageBox.Show(number.ToString, state.ToString)
    21. End Select
    22. End Sub
    23. End Class

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VB1963“ ()

    Vultrax schrieb:

    welche Suchbegriff ich eingeben soll.
    MSDN Combobox.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!