Announcement

Collapse
No announcement yet.

"inherits String"...

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

  • "inherits String"...

    Hallo!<br>
    <br>
    Ich bräuchte eine Object das im Prinzip System.String entspricht aber zudem noch ein <i>.Tag</i> Flag besitzt...<br>
    Von der String-Klasse kann ich nichts ableiten und ein Object welches sich für meine Zwecke anbietet finde ich nicht...<br>
    Hast Du eine Idee wie ich das realisieren kann...<br>
    <br>
    <b>Hintergrund</b><br>
    Eine Listbox erhält Einträge die aus einem Namen (Bezeichnung) und einer ID bestehen. Die ID muss irgendwie noch mit zum Objekt hinzugefügt werden...<br>
    Die Möglichkeit 2 Listen zu verwenden möchte ich eigentlich nicht in Betracht ziehen!!!<br>
    <br>
    Vielen Dank!<br>
    &nbsp;Nico Stöckigt<br>
    <br>
    --------------------------------------------------------------------------------<br>
    Nachtrag: Stell ich wirklich so/zu schwierige Fragen?!?

  • #2
    Hallo,

    für diese Aufgabe kann man eine DataTable nutzen. Die Listbox unterscheidet dann zwischen <b>DisplayMember</B> und <b>ValueMember</b>. Wenn ein Eintrag aus der Listbox ausgewählt wurde, liefert der Zugriff auf die Listbox-Eigenschaft <b>SelectedValue</b> die dazugehörende ID zurück, obwohl der Anwender in der Benutzeroberfläche nur den DisplayMember-Wert zu Gesicht bekommt:
    <pre>
    Imports System.Data
    ...
    Dim aTbl As DataTable

    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    aTbl = New DataTable
    aTbl.Columns.Add("Wert", GetType(String))
    aTbl.Columns.Add("ID", GetType(Int32))
    aTbl.PrimaryKey = New DataColumn() {aTbl.Columns("Wert")}
    ' Testdaten eintragen
    aTbl.Rows.Add(New Object() {"Eintrag 1", 1})
    aTbl.Rows.Add(New Object() {"Eintrag 2", 2})
    aTbl.Rows.Add(New Object() {"Eintrag 3", 3})
    ' Ergebnis anzeigen
    With Me.ListBox1
    .DataSource = aTbl
    .DisplayMember = "Wert"
    .ValueMember = "ID"
    End With
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    MessageBox.Show(Me.ListBox1.SelectedValue.ToString ())
    End Sub
    </pre>
    P.S: Anstelle von DataTable kann man auch zu einem ganz normalen Array greifen, um diese als Datenquelle für die Listbox zu nehmen. Der Aufwand ist im Fall der DataTable jedoch geringer, zumal zusätzlich auch die anderen Funktionen einer DataTable verfügbar sind

    Comment

    Working...
    X