Auswahl ListBoxItem und Übergabe an MessageBox

  • WPF

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Schamash.

    Auswahl ListBoxItem und Übergabe an MessageBox

    Die Auswahl eines ListBoxItem soll an eine MessageBox übergeben werden:

    XML-Quellcode

    1. <ListBox SelectionChanged="ListBox1_SelectionChanged" >
    2. <ListBoxItem>ItemA</ListBoxItem>
    3. <ListBoxItem>ItemB</ListBoxItem>
    4. <ListBoxItem>ItemC</ListBoxItem>
    5. </ListBox>


    VB.NET-Quellcode

    1. Private Sub ListBox1_SelectionChanged(sender As System.Object, e As System.Windows.Controls.SelectionChangedEventArgs)
    2. Dim Auswahl As String = ListBox1.SelectedItems.ToString
    3. If Auswahl = "ItemA" Then
    4. MessageBox.Show("A")
    5. End If
    6. End Sub


    Eigentlich sollte es ganz einfach sein; ist es aber offensichtlich nicht. Es passiert gar nichts. Was ist hier falsch?
    So geht es:

    VB.NET-Quellcode

    1. ​Dim Auswahl As String = ListBox1.SelectedItem.ToString()
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Nein so geht es nicht. Es erfolgt gar keine Reaktion.

    VB.NET-Quellcode

    1. Private Sub ListBox1_SelectionChanged(sender As System.Object, e As System.Windows.Controls.SelectionChangedEventArgs)
    2. Dim Auswahl As String = ListBox1.SelectedItem.ToString
    3. If Auswahl = "ItemA" Then
    4. MessageBox.Show("A")
    5. End If
    6. End Sub


    Lediglich wenn die Bedingung weg gelassen wird kommt die MessageBox.
    Ich habe es jetzt so gemacht:

    XML-Quellcode

    1. <ListBox Name="ListBox2">
    2. <ListBoxItem Content="A"/>
    3. <ListBoxItem Content="B"/>
    4. </ListBox>


    VB.NET-Quellcode

    1. Private Sub ListBox2_SelectionChanged(sender As Object, e As System.Windows.Controls.SelectionChangedEventArgs) Handles ListBox2.SelectionChanged
    2. Dim item As Object = ListBox2.SelectedItem
    3. TextBox1.Text = item.ToString
    4. End Sub


    Es kommt die Ausgabe: System.Windows.Controls.ListBoxItem: A

    Allerdings möchte ich gern auf den Zusatz " System.Windows.Controls.ListBoxItem: " verzichten.
    Geh mal mit dem Debugger da durch. Wird denn deiner Variablen "Auswahl" überhaupt was zugewiesen und was ist der Value des dann ausgewählten Items?

    Mal ganz doof gesagt und nur um sicher zu gehen. In deiner Bedingung prüfts ob dein gewähltes Item "ItemA" ist, wenn du also as anderes anklickst kommt auch keine MessageBox, das ist dir bewusst?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    mrMo; ich nehme an unsere ANtworten haben sich überschnitten.
    Mit der zu letzt gezeigten Variante wird der Wert der entsprechenden Auswahl angezeigt.

    Mich stört nur noch der Zusatz "System.Windows.Controls"

    Ich nehme an es lag am falschen AUfbau der ListBox.

    Thomas2705 schrieb:

    mrMo; ich nehme an unsere Antworten haben sich überschnitten.

    Ja, scheint so :)

    ​Mich stört nur noch der Zusatz "System.Windows.Controls"

    Mit WPF kenne ich mich nicht so aus, daher kann ich dir nicht sagen, wie du diese "richtig" mit Items bestückst.

    ​Jetzt hast du in deinem Code gar kein "If" mehr und statt eine Msg ne TextBox? Bist du dabei dich in WPF/Controls/VB einzuarbeiten (falls ja, weiter so :thumbsup: )oder hast du ein konkretes Projekt vor?

    ​Dein Lösungsansatz mit dem Datentyp Object ist dirty, du brauchst hier nen string. Wobei das so noch einfacher ist:
    ​TextBox1.Text = ListBox2.SelectedItem
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

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

    So gehts in WPF

    VB.NET-Quellcode

    1. Private Sub button_Click(sender As Object, e As RoutedEventArgs) Handles button.Click
    2. Dim text As New ListBoxItem
    3. text = listBox.SelectedItem
    4. MessageBox.Show(text.Content)
    5. End Sub



    EDIT: alten WinForms Code entfernt
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

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

    Thomas2705 schrieb:

    Mich stört nur noch der Zusatz "System.Windows.Controls"

    Wie bekomme ich das weg?


    ​Versuch das mal: TextBox1.Text = ListBox2.SelectedItem
    ​Falls das nicht geht, muss es an irgend was WPF mäßigem liegen, da muss dir dann jemand helfen, dessen Fachgebiet das ist.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    so sollte es funktionieren

    Quellcode

    1. ​ Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    2. Dim index As Integer = ListBox1.SelectedIndex
    3. MsgBox(ListBox1.Items(index), MsgBoxStyle.Information, "msg")
    4. End Sub
    Schäm dich nicht "Zu fragen", schäm dich "Nicht zu wissen". ?(
    @Solaris wollte eigentlich nur die Bilder im Spoiler haben. Hab es mal angepass.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."