260 likes | 464 Views
VB.Net Loops. Loop. FOR index – start TO end [STEP step] [statements] [EXIT FOR] NEXT index DO [{WHILE| UNTIL} condition] [statements] [EXIT DO] LOOP. Do While/Do Until. Private Sub Command1_Click() Dim counter As Integer counter = 0 Do While counter <= 5
E N D
Loop • FOR index – start TO end [STEP step] [statements] [EXIT FOR] NEXT index DO [{WHILE| UNTIL} condition] [statements] [EXIT DO] LOOP
Do While/Do Until Private Sub Command1_Click() Dim counter As Integer counter = 0 Do While counter <= 5 Debug.Write(counter) counter = counter + 1 Loop Text1.Text = counter End Sub Private Sub Button2_Click() Dim counter As Integer counter = 0 Do Until counter > 5 Debug.Write(counter) counter = counter + 1 Loop Text1.Text = counter End Sub
Loop Demo:Future Value Dim output As String = "Year" & vbTab & "FutureValue" & vbCrLf Dim output2 As String = "Year" & vbTab & "FutureValue" & vbCrLf Dim amount, principal, iRate, year As Single Dim yearIndex As Integer principal = CSng(TextBox1.Text) iRate = CSng(TextBox2.Text) year = CSng(TextBox3.Text) For yearIndex = 1 To CInt(year) amount = principal * (1 + iRate) ^ yearIndex output = output & yearIndex & vbTab & FormatCurrency(amount) & vbCrLf output2 = output2 & yearIndex & vbTab & String.Format("{0:c}", amount) & vbCrLf Next MessageBox.Show(output, "FutureValue", MessageBoxButtons.OK) MessageBox.Show(output2, "FutureValue", MessageBoxButtons.OK) Note: Use the Do While, Do Until loops. Note: vbCrLf is a VB keyword for a new line.
Example: Display characters entered in textbox1one at a time • Dim index As Integer • index = 0 • For index = 0 To TextBox1.TextLength - 1 MessageBox.Show(TextBox1.Text.Substring(index, 1)) • Next • Problem 1: How many “a” entered in textbox1? • Problem 2: How many words entered in textbox1?
Dim i, j, wordCount As Integer Dim trimedText As String trimedText = TextBox1.Text.Trim() wordCount = 0 If trimedText.Length = 0 Then wordCount = 0 Else For i = 0 To trimedText.Length - 1 If trimedText.Substring(i, 1) = Chr(Keys.Space) Then wordCount += 1 For j = i To trimedText.Length - 1 If Not trimedText.Substring(j, 1) = " " Then i = j Exit For End If Next End If Next wordCount += 1 End If MessageBox.Show(wordCount.ToString & "words")
Dim i As Integer = 0 Dim j As Integer Dim wordCount As Integer = 0 Dim searchText As String searchText = TextBox1.Text If searchText.Length > 0 Then Do While True j = searchText.IndexOf(" ", i) If j < 0 Then wordCount += 1 Exit Do End If If j = i Then i += 1 Else wordCount += 1 i = j + 1 End If If i >= searchText.Length Then Exit Do End If Loop End If MessageBox.Show(wordCount.ToString & "words")
List Box • Useful properties • Items: The items in the listBox. It is a collection strcture. Items can be entered at the design time or entered with code. • SelectionMode: one or multi selection • SelectedItem(s), SelectedIndex • Methods • Add • Clear • Events: SelectedIndexChanged event
List Box Example Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox1.Clear() TextBox2.Clear() ListBox1.Items.Clear() ListBox1.Items.Add("Apple") ListBox1.Items.Add("Orange") ListBox1.Items.Add("Banana") ListBox1.Items.Add("Strawberry") TextBox2.Text = ListBox1.Items.Count.ToString End Sub Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged TextBox1.Text = ListBox1.SelectedItem End Sub
Selected Item’s Value • Demo: • Select interest rate from a list box.
ListBox Multiple Selections Note: The SelectionMode property must set to multi selection. extBox2.Text = ListBox1.SelectedItems.Count.ToString Dim allSel As String Dim i As Integer For i = 0 To ListBox1.SelectedItems.Count - 1 allSel = allSel & ListBox1.SelectedItems.Item(I) Or allSel = allSel & ListBox1.SelectedItems(I) Next ‘**** Or use the For Each loop**** Dim item As String For Each item In ListBox1.SelectedItems allSel = allSel & item Next TextBox3.Text = allSel
ListBox Items Collections • Methods: • ADD: ListBox1.Items.Add("Apple") • Item: Retrieve an object from Items • ListBox1.Items.Item(Index) • ListBox1.Items(Index) • 0-based index • Insert: ListBox.Items.Insert(Index, item) • Remove: Delete an object with a position index or key. • ListBox.Items.Remove(Item) • ListBox.Items.RemoveAt(Index) • Listbox1.Refresh() • Clear: ListBox.Items.Clear() • Count: Return the number of objects in a collection.
Using ListBox to Display Output ListBox1.Items.Clear() ListBox1.Items.Add("Year" & vbTab & "FutureValue") For yearIndex = 1 To CInt(year) amount = principal * (1 + iRate) ^ yearIndex ListBox1.Items.Add(yearIndex.ToString & vbTab & FormatCurrency(amount)) Next
ComboBox • Allows the user to type text directly into the combo box. • Use the Text property to get entered item: • ComboBox1.Text • The index for an entered item is –1. • SelectedItem may be different from the Text property. • Search an item in the list: ComboBox1.Items.IndexOf(“search text”) • Found: return the index of the search text. • Not found: return –1. • How to add an entered item to the list?
Unstructured Error Handling • On Error GoTo errorhandler (a label) • Built-in Err object properties: • Number – Error number • Source – Name of VB ile in which error occurred • Description – error message • Continue the program execution: • Resume: returns execution to the statement that caused the error. • Resume Next • Resume label: Jumps to the line containing the label. • Exit Sub
Error Handling Example Private Sub cmdDivide_Click() On Error GoTo DivideErrorHandler lalAnswer.Caption=CStr(CDbl(Text1.text)/CDbl(Text2.Text)) Exit Sub DivideErrorHandler: MsgBox(CStr(Err.Number) & “: “ & Err.Description) Exit Sub End Sub
Structured Error Handling Try result = Val(TextBox1.Text) / Val(TextBox2.Text) TextBox3.Text = result.ToString Catch except As DivideByZeroException MessageBox.Show(except.Message) Catch except As Exception MessageBox.Show(except.Message) Finally MessageBox.Show("I get exdecuted, no matter what") End Try
Collections • Collections are used to store lists of objects. • More flexible than array: • No need to declare the number of objects in a collection. • Objects can be added, deleted at any position. • Object can be retrieved from a collection by a key. • Can store different types of objects. • A collection’s name usually end with a “s”.
Using Collections • Define a collection: • Ex. Dim Pets as New Collection • Methods: • ADD: Add object to a collection • Pets.Add(“dog”) • Add an object with a key: • Pets.Add(“Dog”, “D”) • Item: Retrieve an object from a collection with a position index (base 1) or with a key. • petName = Pets.Item(1) • petName = Pets.Item(“D”) • Count: Return the number of objects in a collection. • Remove: Delete an object with a position index or key.
Iterating Through a Collection Dim Pets as New Collection … Dim Indx as Long For Indx = 1 to Pets.Count …operations … Next Indx For Each pet in Pets … operations … Next pet
Enumerations • Provide a way to associate meaningful names with a sequence of constant values. • Define an enumeration using an Enum statement in classes, modules, and structures. • Private Enum seasonOfYear • Spring = 1 • Summer = 2 • Fall= 3 • Winter = 4 • End Enum
Enumerations • Provide a way to associate meaningful names with a sequence of constant values. Enum enumTest spring = 1 summer fall winter End Enum Dim etest As enumTest Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load etest = enumTest.summer TextBox1.Text = Val(etest).ToString