Gegevensstructuren: list boxen en lijsten
description
Transcript of Gegevensstructuren: list boxen en lijsten
Gegevensstructuren:list boxen en lijsten
Hoofdstuk 13
Hoofdstuk 13 Visual Basic .NET voor studenten 2
In dit hoofdstuk … Nieuwe control: ListBox
Items toevoegen en verwijderen Lengte Selectie, zoeken
Nieuwe datastructuur: (I)List Objecten toevoegen en verwijderen Lengte Selectie, zoeken
ListBox is grafisch, (I)List werkt achter de schermen
Hoofdstuk 13 Visual Basic .NET voor studenten 3
Een ListBox Beschikbaar in de Toolbox Toont een lijst van string items Deze lijst kan tijdens het ontwerpen ingegeven worden
(Properties)
Hoofdstuk 13 Visual Basic .NET voor studenten 4
IList De datastructuur die achter de schermen de
items van een ListBox beheert Kan ook onafhankelijk van een ListBox
worden gebruikt Opmerking: dit is eigenlijk geen klasse, maar
een interface hoofdstuk 23 De werkelijke klasse die achter de schermen
speelt is: ListBox.ObjectCollection
Hoofdstuk 13 Visual Basic .NET voor studenten 5
IList
In welke namespace vind je IList? Waarom is er geen Imports statement nodig in de code van de Form?
Dim myList As IListmyList = Shopping.Items
Dim numberOfItems As IntegernumberOfItems = myList.Count
‘kortere schrijfwijzeDim numberOfItems As Integer = Shopping.Items.Count
Hoofdstuk 13 Visual Basic .NET voor studenten 6
Items toevoegenPrivate Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click Shopping.Items.Add(TextBox1.Text)End Sub
Een toevoeging aan de IList veroorzaakt automatisch een update van de bijhorende ListBox
Hoofdstuk 13 Visual Basic .NET voor studenten 7
De lengte van een ListBox
Private Sub CountButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles CountButton.Click MessageBox.Show(CStr(Shopping.Items.Count))End Sub
Je vraagt het aantal elementen op dat in de bijhorende IList zit
Hoofdstuk 13 Visual Basic .NET voor studenten 8
Indices
Private Sub Shopping_SelectedIndexChanged( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Shopping.SelectedIndexChanged TextBox1.Text = CStr(Shopping.SelectedIndex)End Sub
Een item selecteren vuurt een event af: SelectedIndexChanged
Indexen starten vanaf 0!
Hoofdstuk 13 Visual Basic .NET voor studenten 9
Verwijderen en invoegen
Bestudeer eveneens volgende methodes en maak kleine testprogrammaatjes om deze methodes uit te proberen
Clear, Clone, Contains, IndexOf, LastIndexOf, Remove, RemoveAt, Reverse, Sort
Shopping.Items.RemoveAt(3)
Shopping.Items.Insert(5, “Tea”)
Hoofdstuk 13 Visual Basic .NET voor studenten 10
Opzoektabel
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click Dim monthNumber As Integer Dim monthName As String
monthNumber = CInt(TextBox1.Text) monthName = CStr(Months.Items(monthNumber - 1)) TextBox2.Text = monthName
End Sub
Hoofdstuk 13 Visual Basic .NET voor studenten 11
Rekenen met een ListBox
Bestudeer zelf de code
Hoofdstuk 13 Visual Basic .NET voor studenten 12
For EachDim sum As IntegerDim n As Integersum = 0
For index As Integer = 0 To Numbers.Items.Count -1 n = CInt(Numbers.Items.Item(index)) sum = sum + nNextSumTextBox.Text = CStr(sum)
Dit kan korter door een speciale For Each constructie
Hoofdstuk 13 Visual Basic .NET voor studenten 13
For EachDim sum As Integersum = 0
For Each number As Integer In Numbers.Items sum = sum + numberNextSumTextBox.Text = CStr(sum)
Hoofdstuk 13 Visual Basic .NET voor studenten 14
For Each Erg kort Maar: je beschikt niet over de
indexwaarde van de lijstNiet zo flexibel!
Alleen te gebruiken als je alle waarden van een lijst wil doorlopen
Hoofdstuk 13 Visual Basic .NET voor studenten 15
Zoeken
Bestudeer zelf de code
Hoofdstuk 13 Visual Basic .NET voor studenten 16
Gebruik van een lijst - Genericiteit
De List klasse kan ook op zichzelf gebruikt worden
Algemene datastructuur Preciezer: List is een klasse die de IList
interface implementeert Generisch: je kan aanduiden van welke klasse
de objecten zijn die in de List zitten
Hoofdstuk 13 Visual Basic .NET voor studenten 17
List: voorbeeldPrivate myList As List(Of String)...myList = New List(Of String)
Private myList As New List(Of String)
myList kan enkel String objecten bevatten. Dit zal door de compiler gecontroleerd worden.
Hoofdstuk 13 Visual Basic .NET voor studenten 18
List: voorbeeldImports System.Collections.Generic
myList.Add("bread")myList.Add("milk")myList.Add("coffee")
Benodigde namespace
Toevoegen van items
Hoofdstuk 13 Visual Basic .NET voor studenten 19
List: voorbeeldDim index As IntegerFor index = 0 To myList.Count - 1 myListBox.Items.Add(myList(index))Next
For Each s As String In myList myListBox.Items.Add(s)Next
Doorlopen van een lijst
Hoofdstuk 13 Visual Basic .NET voor studenten 20
Opmerking
In het vorige voorbeeld werden de strings gekopieerd van een List naar de lijst van een ListBox
Dit is overbodig werk, want je kan gebruik maken van “Data Binding”
Dit valt echter buiten het bestek van de cursus Meer info:
http://www.codeproject.com/vb/net/databindingconcepts.asp
Hoofdstuk 13 Visual Basic .NET voor studenten 21
Methodes en Properties van List
Bestudeer dit zelf in de online Help
Hoofdstuk 13 Visual Basic .NET voor studenten 22
Lijsten van objecten
Bestudeer de code: welke klasse van objecten wordt in een List bewaard?
Welk List methodes worden gebruikt?
Hoofdstuk 13 Visual Basic .NET voor studenten 23
CheckedListBox Identiek aan een ListBox, maar elk item
kan aangevinkt worden De aangevinkte items zijn te vinden via de
property
CheckedListBox.CheckedItems
Hoofdstuk 13 Visual Basic .NET voor studenten 24
Oefening
Tracht zelf volgend programma te schrijven: elk item dat je aan- of afvinkt wordt toegevoegd of verwijderd in de ListBox rechts.
Hoofdstuk 13 Visual Basic .NET voor studenten 25
ComboBox Voeg een ComboBox toe op een form Welk event wordt er afgevuurd als een
item wordt geselecteerd? Hoe kan je het geselecteerde item
opvragen? Experimenteer met de property DropDownStyle
Hoofdstuk 13 Visual Basic .NET voor studenten 26
Oefening
Een ComboBox bevat verschillende kleuren. Een label wordt naargelang de gekozen kleur ingevuld