SelectedValue -
07-23-2003
, 04:52 AM
If I use the following program in a Form I get two
different objects for the selectedvalue property. For the
listbox I get a member of the Person class and for the
combobox I get Nothing. Is there any mistake if I set the
valuemembers (="IDD") ???
Public Class frmComboBox
Inherits System.Windows.Forms.Form
#Region " Vom Windows Form Designer generierter Code "
Public Sub New()
MyBase.New()
' Dieser Aufruf ist für den Windows Form-Designer
erforderlich.
InitializeComponent()
' Initialisierungen nach dem Aufruf
InitializeComponent() hinzufügen
End Sub
' Die Form überschreibt den Löschvorgang der
Basisklasse, um Komponenten zu bereinigen.
Protected Overloads Overrides Sub Dispose(ByVal
disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
' Für Windows Form-Designer erforderlich
Private components As System.ComponentModel.IContainer
'HINWEIS: Die folgende Prozedur ist für den Windows
Form-Designer erforderlich
'Sie kann mit dem Windows Form-Designer modifiziert
werden.
'Verwenden Sie nicht den Code-Editor zur Bearbeitung.
Friend WithEvents cboTesten As
System.Windows.Forms.ComboBox
Friend WithEvents lstTesten As
System.Windows.Forms.ListBox
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.cboTesten = New
System.Windows.Forms.ComboBox
Me.lstTesten = New
System.Windows.Forms.ListBox
Me.SuspendLayout()
'
'cboTesten
'
Me.cboTesten.Location = New
System.Drawing.Point(356, 116)
Me.cboTesten.Name = "cboTesten"
Me.cboTesten.Size = New
System.Drawing.Size(256, 21)
Me.cboTesten.TabIndex = 0
Me.cboTesten.Text = "Testen"
'
'lstTesten
'
Me.lstTesten.Location = New
System.Drawing.Point(316, 200)
Me.lstTesten.Name = "lstTesten"
Me.lstTesten.Size = New
System.Drawing.Size(196, 82)
Me.lstTesten.TabIndex = 1
'
'frmComboBox
'
Me.AutoScaleBaseSize = New
System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size
(908, 394)
Me.Controls.Add(Me.lstTesten)
Me.Controls.Add(Me.cboTesten)
Me.Name = "frmComboBox"
Me.Text = "frmComboBox"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub frmComboBox_Load(ByVal sender As
Object, ByVal e As System.EventArgs) Handles MyBase.Load
cboTesten.Items.Add(New Person
("JOE", "DOE", 2))
cboTesten.Items.Add(New Person
("IOE", "EOE", 1))
cboTesten.Items.Add(New Person
("KOE", "FOE", 3))
cboTesten.DisplayMember = "ReverseName"
cboTesten.ValueMember = "IDD"
lstTesten.DataSource = cboTesten.Items
lstTesten.DisplayMember = "ReverseName"
lstTesten.ValueMember = "IDD"
End Sub
Private Sub cboTesten_SelectedIndexChanged(ByVal
sender As Object, ByVal e As System.EventArgs) Handles
cboTesten.SelectedIndexChanged
MsgBox("CboTesten" & CStr
(cboTesten.SelectedIndex))
End Sub
Private Sub lstTesten_SelectedIndexChanged(ByVal
sender As Object, ByVal e As System.EventArgs) Handles
lstTesten.SelectedIndexChanged
MsgBox("lstTesten" & CStr
(lstTesten.SelectedIndex))
End Sub
End Class
Class Person
Public ID As Integer
Public Firstname As String
Public Lastname As String
Sub New(ByVal First As String, ByVal Last As
String, ByVal Id As Integer)
MyBase.new()
Me.Firstname = First
Me.Lastname = Last
Me.ID = Id
End Sub
ReadOnly Property ReverseName() As String
Get
Return Lastname & "; " & Firstname
End Get
End Property
ReadOnly Property IDD() As Integer
Get
Return ID
End Get
End Property
End Class |