Announcement

Collapse
No announcement yet.

ListBoxKunden.SelectedItem.ToString

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ListBoxKunden.SelectedItem.ToString

    Ich hab eine Listbox, dort ein Ereignis
    Code:
        Private Sub ListBoxKunden_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBoxKunden.SelectedIndexChanged
            Me.Text = ListBoxKunden.SelectedItem.ToString
    
        End Sub
    Als Ergebnis bekomme ich ein "System.Data.DataRowView"

    fahre ich mit dem Cursor über "sender", dann sehe ich

    sender {SelectedItem = "abc"}

    Als DataSource für das Control habe ich eine BindingSource (ich hoffe, Ihr versteht).

    In sämtlicher Literatur steht: mit ListBox.SelectedItem komme ich an die Auswahl der Listbox. Wo ist mein Fehler? Was muss ich tun?

    Grüße
    Bruno

  • #2
    Hallo,

    das SelectedItem gibt ein Objekt zurück. Die ToString-Methode gibt deshalb die Bezeichnung des Objekts wieder.

    D.h. das zurückgebene Objekt muss in deine Klasse konvertiert werden und dann kann die Eigenschaft gewählt werden.

    Angenommen es gibt ein Klasse Foo die eine Eigenschaft Name hat. Eine Liste mit Instanzen dieser Klasse ist über eine BindingSource and die ListBox gebunden:
    [highlight=vb.net]
    Private Sub listBox1_SelectedIndexChanged(sender As Object, e As EventArgs)
    Dim foo As Foo = TryCast(listBox1.SelectedItem, Foo)
    Me.Text = foo.Name
    End Sub
    [/highlight]

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      meine Lösung.

      Danke für Deinen Tipp. OK, ich glaube, ich verstehe so langsam, was da passiert.

      Hier meine Lösung - ich bekomme den Wert der ListBox.

      Code:
         Private Sub ListBoxKunden_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBoxKunden.SelectedIndexChanged
              Dim foo As DataRowView = TryCast(ListBoxKunden.SelectedItem, DataRowView)
              Me.Text = foo.Item(0).ToString
          End Sub

      Wie komme ich an den Key, den Wert, der hinter diesem Value versteckt ist?

      Gute Nacht

      Bruno

      Comment


      • #4
        Mit der SelectedValue-Eigenschaft.

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Danke -
          Private Sub ListBoxKunden_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBoxKunden.SelectedIndexChanged
          Dim foo As DataRowView = TryCast(ListBoxKunden.SelectedItem, DataRowView)
          Dim foo1 As DataRowView = TryCast(ListBoxKunden.SelectedValue, DataRowView)
          Me.Text = foo1.Item(0).ToString
          End Sub

          Hier bring mir foo1 den Wert: nothing.

          Ich weiss, ich nerve.....

          Bruno

          Comment


          • #6
            Ich weiss, ich nerve.....
            nein - du lernst ja.

            Mit SelectedItem wird das aktuelle Objekt aus der ListBox geholt. Es ist daher nicht nötig zweimal den Wert zu lesen.

            Das SelectedItem gibt ein Objekt zurück (hatten wir schon) und über dessen Eigenschaften kannst zu zugreifen, nachdem es zu deinem Typ konvertiert wurde.

            Wenn du mit Visual Studio entwickelst setzte einen Haltepunkt im SelectedIndexChanged-Ereignis und schau dir während des Debuggen an was dargestellt wird wenn du mit der Maus über eine Variable fährst -> dann siehst du welche Objekte welche Werte haben.

            Übrigens habe ich bei deiner 1. Frage zu kompliziert gedacht. Wenn du den Text der aktuellen Auswahl der ListBox willst genügt
            [highlight=vb.net]
            listBox1.Text
            [/highlight]
            So einfach kanns sein

            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              Danke - hier meine Lösung:

              ' was wurde selektiert?
              Dim foo As DataRowView = TryCast(ListBoxKunden.SelectedItem, DataRowView)
              Me.Text = foo.Item(0).ToString & "|" & _
              foo.Item(1).ToString & "|" & _
              foo.Item(2).ToString & "|"

              In Item(0) und item(1) stehen Werte, in item(2) der Schlüssel (key)

              Vielen Dank! Du hast mir sehr geholfen!
              Bruno

              Comment

              Working...
              X