260 likes | 354 Views
Gegevensstructuren: list boxen en lijsten. Hoofdstuk 13. In dit hoofdstuk …. Nieuwe control: ListBox Items toevoegen en verwijderen Lengte Selectie, zoeken Nieuwe datastructuur: (I)List Objecten toevoegen en verwijderen Lengte Selectie, zoeken
E N D
Gegevensstructuren:list boxen en lijsten Hoofdstuk 13
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 Visual Basic .NET voor studenten
Een ListBox • Beschikbaar in de Toolbox • Toont een lijst van string items • Deze lijst kan tijdens het ontwerpen ingegeven worden (Properties) Visual Basic .NET voor studenten
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 Visual Basic .NET voor studenten
IList Dim myList As IList myList = Shopping.Items Dim numberOfItems As Integer numberOfItems = myList.Count ‘kortere schrijfwijze Dim numberOfItems As Integer = Shopping.Items.Count • In welke namespace vind je IList? Waarom is er geen Imports statement nodig in de code van de Form? Visual Basic .NET voor studenten
Items toevoegen Private 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 Visual Basic .NET voor studenten
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 Visual Basic .NET voor studenten
Indices Een item selecteren vuurt een event af: SelectedIndexChanged Indexen starten vanaf 0! Private Sub Shopping_SelectedIndexChanged( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Shopping.SelectedIndexChanged TextBox1.Text = CStr(Shopping.SelectedIndex) End Sub Visual Basic .NET voor studenten
Verwijderen en invoegen Shopping.Items.RemoveAt(3) Shopping.Items.Insert(5, “Tea”) Bestudeer eveneens volgende methodes en maak kleine testprogrammaatjes om deze methodes uit te proberenClear, Clone, Contains, IndexOf, LastIndexOf, Remove, RemoveAt, Reverse, Sort Visual Basic .NET voor studenten
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 Visual Basic .NET voor studenten
Rekenen met een ListBox Bestudeer zelf de code Visual Basic .NET voor studenten
For Each Dit kan korter door een speciale For Each constructie Dim sum As Integer Dim n As Integer sum = 0 For index As Integer = 0 To Numbers.Items.Count -1 n = CInt(Numbers.Items.Item(index)) sum = sum + n Next SumTextBox.Text = CStr(sum) Visual Basic .NET voor studenten
For Each Dim sum As Integer sum = 0 For Each number As Integer In Numbers.Items sum = sum + number Next SumTextBox.Text = CStr(sum) Visual Basic .NET voor studenten
For Each • Erg kort • Maar: je beschikt niet over de indexwaarde van de lijst • Niet zo flexibel! • Alleen te gebruiken als je alle waarden van een lijst wil doorlopen Visual Basic .NET voor studenten
Zoeken Bestudeer zelf de code Visual Basic .NET voor studenten
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 Visual Basic .NET voor studenten
List: voorbeeld Private 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. Visual Basic .NET voor studenten
List: voorbeeld Imports System.Collections.Generic Benodigde namespace myList.Add("bread") myList.Add("milk") myList.Add("coffee") Toevoegen van items Visual Basic .NET voor studenten
List: voorbeeld Dim index As Integer For 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 Visual Basic .NET voor studenten
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 Visual Basic .NET voor studenten
Methodes en Properties van List • Bestudeer dit zelf in de online Help Visual Basic .NET voor studenten
Lijsten van objecten • Bestudeer de code: welke klasse van objecten wordt in een List bewaard? • Welk List methodes worden gebruikt? Visual Basic .NET voor studenten
CheckedListBox • Identiek aan een ListBox, maar elk item kan aangevinkt worden • De aangevinkte items zijn te vinden via de propertyCheckedListBox.CheckedItems Visual Basic .NET voor studenten
Oefening Tracht zelf volgend programma te schrijven: elk item dat je aan- of afvinkt wordt toegevoegd of verwijderd in de ListBox rechts. Visual Basic .NET voor studenten
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 Visual Basic .NET voor studenten
Oefening Een ComboBox bevat verschillende kleuren. Een label wordt naargelang de gekozen kleur ingevuld Visual Basic .NET voor studenten