| |

VB.NET - FortgeschritteneRe: ArrayList wieder aufdröseln | |  | Autor: WaldiMaywood | Datum: 23.08.04 19:03 |
| ... OK, hier mal meine Art, das zu erklären:
>> Die Klasse:
Die Klasse sollte nur ein kleines Bsp. sein. Es ist auch ohne weiteres möglich, eine Klasse zu erstellen die mehrere Eig. oder auch Überschreibung besitzt. Also mehr als Display- und Valuemember. z.B. Benutzernummer, Benutzername, Alter .. usw.
Aber sonst ist die Klasse verständlich, oder?
Hier findest du übrigens noch ein anderes Bsp.:http://www.vbarchiv.net/forum/read.php?f=10&i=9505&t=9452
>> Anwendung:
Dim a As New ArrayList
For Each dr As DataRow In dt.Rows
a.Add(New TestClass(dr(0).ToString, dr(1).ToString))
Next
Me.ComboBox1.DataSource = a
Me.ComboBox1.DisplayMember = "DisplayMember"
Me.ComboBox1.ValueMember = "ValueMember" Ist eigentlich auch verständlich? Wäre übrigens auch ohne dem Umweg einer ArrayList möglich. In etwa so:
For Each dr As DataRow In dt.Rows
Me.ComboBox1.Items.Add(New TestClass(dr(0).ToString, dr(1).ToString))
Next Bei dieser Var. kannst du dir die Display- und ValueMember sparen. Dafür benötigts du aber eine ToString() Überschreibung in der TestClass, auf welche die CB zugreift. Zum Beispiel:
Public Class TestClass
Private dis As String
Private val As String
Public Sub New(ByVal dis As String, ByVal val As String)
Me.dis = dis
Me.val = val
End Sub
Public ReadOnly Property DisplayMember() As String
Get
Return dis
End Get
End Property
Public ReadOnly Property ValueMember() As String
Get
Return val
End Get
End Property
Public Overrides Function ToString() As String
Return dis '// Wäre in der CB sichtbar
End Function
End Class >> Zugriff auf die Elemente in der ComboBox
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal _
e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim c As TestClass = DirectCast(Me.ComboBox1.SelectedItem, TestClass)
MessageBox.Show(c.ValueMember + " : " + c.DisplayMember)
End Sub Das ist eigentlich nicht so schwer zu verstehen. In der CB befinden sich jetzt statt normale Datentypen (wie String, Integer .. usw.), komplexe benutzerdefinierte Objekte. Mit DirectCast() oder CType() wandelst du das markierte Item in den richtigen Typ um, und setzt eine Referenz auf die Var. "c". Über die Var. "c" kannst du auf alle Member bzw. Eig. zugreifen. vom Prinzip her recht simpel. Wenn du dich int. mit OOP befasst, kommt dir dies irgendwann einmal als völlig selbst verständlich vor.
Übrigens: Über die CB Eigenschaften "SelectedItem.ToString()" und "SelectedValue.ToString()", ist es auch möglich auf die Display- und Valuewerte zuzugreifen. (Natürlich nur dann wenn du die DataSource Variante benutzt)
Hoffe es war leicht verdaulich. Wenn nicht, einfach nachfragen
Steve |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
TOP! Unser Nr. 1 
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|