JavaScript Editor
JavaScript Debugger|
| ||
Examples always help, and in fact, we've already seen an example that puts together many of the aspects of OOP in Visual Basic, including custom classes and objects, fields, methods, constructors, and so on in Chapter 7 (see "Storing Objects in a List Box or Combo Box" in that chapter). This example, ComboBoxesData, stores objects in a combo box, and each object holds its name and index in the combo box. When the user selects an item in the combo box, the code recovers the data from the object corresponding to the selected item, and displays that data.
To make this work, I created a class named DataItem, which used a New constructor to store each item's name and index value as internal, private data:
Public Class DataItem
Private Data As Single
Private Name As String
Public Sub New(ByVal NameArgument As String, ByVal Value As Single)
Name = NameArgument
Data = Value
End Sub
⋮
End Class
I also added two methods to this class—ToString, which returns the name of the item (and which actually overrides the ToString method built into the Object class, which is the ultimate base class of every class), and GetData, which returns the index value of the item:
Public Class DataItem
Private Data As Single
Private Name As String
Public Sub New(ByVal NameArgument As String, ByVal Value As Single)
Name = NameArgument
Data = Value
End Sub
Overrides Function ToString() As String
Return CStr(Name)
End Function
Public Function GetData() As Single
Return Data
End Function
End Class
I created 20 objects of this class and placed them into a combo box with the combo box's AddRange method this way when the program's form first loaded:
Public Class Form1
Inherits System.Windows.Forms.Form
'Windows Form Designer generated code
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim Objects(20) As DataItem
ComboBox1.BeginUpdate()
Dim intLoopIndex As Integer
For intLoopIndex = 0 To 20
Objects(intLoopIndex) = New DataItem("Item " & intLoopIndex, _
CSng(intLoopIndex))
Next
ComboBox1.Items.AddRange(Objects)
ComboBox1.EndUpdate()
End Sub
Then, when the user changed the selection in the combo box, I recovered the selected item with the combo box's SelectedItem property, and used the GetData method we have given that item to recover the item's internal data:
Public Class Form1
Inherits System.Windows.Forms.Form
'Windows Form Designer generated code
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim Objects(20) As DataItem
ComboBox1.BeginUpdate()
Dim intLoopIndex As Integer
For intLoopIndex = 0 To 20
Objects(intLoopIndex) = New DataItem("Item " & intLoopIndex, _
CSng(intLoopIndex))
Next
ComboBox1.Items.AddRange(Objects)
ComboBox1.EndUpdate()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As _
System.Object, ByVal e As System.EventArgs) Handles _
ComboBox1.SelectedIndexChanged
MsgBox("The data for the item you selected is: " & _
CType(ComboBox1.SelectedItem, DataItem).GetData())
End Sub
End Class
As you see, now we can understand all that's going on in this code. You can see this example, ComboBoxData, at work in Figure 7.15 in Chapter 7.
|
| ||
Free JavaScript Editor
JavaScript Editor