Week 6 Lists, Loops, Validation, and More. 2 Introduction This chapter covers the Visual Basic looping statements Do … While Do … Until For … Next It

Embed Size (px)

Citation preview

  • Slide 1

Week 6 Lists, Loops, Validation, and More Slide 2 2 Introduction This chapter covers the Visual Basic looping statements Do While Do Until For Next It also discusses the use of List Boxes Combo Boxes As well as presenting some properties and events used for user input validation Slide 3 Input Boxes Input Boxes Provide a Simple Way to Gather Input Without Placing a Text Box on a Form Slide 4 4 Format of the InputBox Function Prompt - message to the user (required) Title - text for the box's title bar Default - default text for user's input Xpos - X coordinate for the box's position Ypos - Y coordinate for the box's position Square brackets around Title and following arguments indicate these are optional InputBox(Prompt [,Title] [,Default] [,Xpos] [,Ypos]) Slide 5 5 Sample InputBox Usage strUserInput = InputBox("Enter the distance.", _ "Provide a Value", "150") If the users clicks OK without entering a value, 150 will be assigned to strUserInput due to the default value Slide 6 6 Xpos & Ypos Xpos specifies the distance from the left of the screen to the left side of the box Ypos specified the distance from the top of the screen to the top of the box Both are specified in pixels Slide 7 List Boxes List Boxes Display a List of Items and Allow the User to Select an Item From the List Slide 8 8 The ListBox Control A ListBox control displays a list of items and allows the user to select one or more Drag from Toolbox to create this control on a form Slide 9 9 ListBox Items Property The Items property holds an entire list of values from which the user may choose The list of values may be established at run time or as part of the form design To set list values in the form design: Select the list box in the Design window View properties & click the Items ellipsis button This property is a collection, a list of values Type each value on a separate line Slide 10 10 ListBox Items.Count Property This property returns an integer with the number of entries stored in the Items property Example of use: The number of entries in the list can be assigned to an integer variable If lstEmployees.Items.Count = 0 Then MessageBox.Show("The list has no items!") End If numEmployees = lstEmployees.Items.Count Slide 11 11 Item Indexing The Items property values can be accessed from your VB code Each item value is given a sequential index The first item has an index of 0 The second item has an index of 1, etc. Example: name = lstCustomers.Items(2) ' Access the 3rd item value Slide 12 12 ListBox SelectIndex Property The SelectIndex property returns an integer with the index of the item selected by the user If no item is selected, the value is set to -1 (an invalid index value) Can use SelectIndex to determine if an item has been selected by comparing to -1 Example: If lstLocations.SelectedIndex-1 Then location = lstLocations.Items(lstLocations.SelectedIndex) End If Slide 13 13 ListBox SelectedItem Property Instead of using the SelectedIndex property as follows: The SelectedItem property can be used to retrieve the value of a selected item as follows: If lstMonths.SelectedIndex-1 Then month = lstMonths.Items(lstMonths.SelectedIndex) End If If lstMonths.SelectedIndex-1 Then month = lstMonths.SelectedItem.ToString) End If Slide 14 14 ListBox Sorted Property Sorted is a boolean property When set to true, values in the Items property are displayed in alphabetical order When set to false, values in the Items property are displayed in the order they were added Slide 15 15 ListBox Items.Add Method Items can be added to the end of a ListBox list in your VB code using the Add method Format is ListBox.Items.Add(Item) ListBox is the name of the control Item is a string value to add to the Items property Example: lstStudents.Items.Add("Sharon") Slide 16 16 ListBox Items.Insert Method Items can be added at a specific position of a ListBox in VB code using the Insert method ListBox.Items.Insert(Index, Item) Index specifies position where Item is placed Index is zero based similar to SelectedIndex property Items that follow are pushed down Example inserting "Jean as the 3 rd item lstStudents.Items.Insert(2, "Jean") Slide 17 17 ListBox Methods to Remove Items ListBox.Items.RemoveAt(Index) Removes item at the specified index ListBox.Items.Remove(Item) Removes item with value specified by Item ListBox.Items.Clear() Removes all items in the Items property Examples: lstStudents.Items.RemoveAt(2)remove 3 rd item lstStudents.Items.Remove(Jean)remove item Jean lstStudents.Items.Clear()remove all items Slide 18 18 Other ListBox Methods ListBox.Items.Contains(Item) Returns true if Item is found in the collection ListBox.Items.IndexOf(Item) Returns an integer with the index position of the first occurrence of Item in the collection Examples: blnFound = lstMonths.Items.Contains(March) intIndex = lstMonths.Items.IndexOf(March) Slide 19 The Do While Loop A Loop Is Part of a Program That Repeats Slide 20 20 Repetition Structure (or Loop) Visual Basic has three structures that allow a statement or group of statements to repeat Do While Do Until For...Next Slide 21 21 Do While Flowchart The Do While loop If the expression is true, the statement(s) are executed Expression is then evaluated again As long as the expression remains true, the statement(s) continue to be repeated Expression statement(s) False True Slide 22 22 Do While Syntax Do, While, and Loop are new keywords The Do While statement marks the beginning of the loop The Loop statement marks the end The statements to repeat are found between these and called the body of the loop Do While expression statement(s) Loop Slide 23 23 Do While Example Private Sub btnRunDemo_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnRunDemo.Click ' Demonstrate the Do While loop Dim intCount As Integer = 0 Do While intCount < 10 lstOutput.Items.Add("Hello") intCount = intCount + 1 Loop End Sub Note that programming style dictates the body of the loop be indented for clarity Slide 24 24 Infinite Loops A loop must have some way to end itself Something within the body of the loop must eventually force the test expression to false In the previous example The loop continues to repeat intCount increases by one for each repetition Finally intCount is not 32 Do Until Loop Test Score Average strInput = InputBox("How many test scores do you " _ & want to average?", "Enter a Value") intNumScores = CInt(strInput) Store starting values sngTotal = 0 intCount = 1 Get the test scores Do Until intCount > intNumScores strInput = InputBox("Enter the value for test score " _ & intCount.ToString, "Test Score Needed") sngTotal = sngTotal + CSng(strInput) intCount = intCount + 1 Loop Calculate the average If intNumScores > 0 then sngAverage = sngTotal / intNumScores Else sngAverage = 0.0 End If Slide 33 33 ForNext Loop Ideal for loops that require a counter For, To, and Next are keywords CounterVariable tracks number of iterations StartValue is initial value of counter EndValue is counter number of final iteration Optional Step allows the counter to increment at a value other than 1 at each iteration of the loop For CounterVariable = StartValue To EndValue [Step] statement Next [CounterVariable] Slide 34 34 ForNext Flowchart Counter = EndValue? statement(s) False True set counter to StartValue increment counter Slide 35 35 The following code uses a ForNext loop to place the squares of the numbers 1 through 10 in a ListBox ForNext Example For intCount = 1 To 10 intSquare = CInt(intCount ^ 2) strTemp = "The square of " & intCount.ToString _ & is & intSquare.ToString lstOutput.Items.Add(strTemp) Next intCount Slide 36 36 More on the StepValue Its optional and if not specified, defaults to 1 The following loop iterates 11 times with counter values 0, 10, 20, , 80, 90, 100 StepValue may be negative, causing the loop to count downward For x = 0 To 100 Step 10 MessageBox.Show("x is now " & x.ToString) Next x For x = 10 To 1 Step -1 MessageBox.Show("x is now " & x.ToString) Next x Slide 37 37 Example: User Specify End Value Dim intCount, intMaxNumbers As Integer Dim dblTotal As Double = 0 Dim dblNum As Double Dim strInput As String intMaxNumbers = CInt(InputBox("How many numbers do " & _ "you wish to sum?")) For intCount = 1 to maxNumbers strInput = InputBox("Enter a number.") dblNum = CDbl(strInput) dblTotal = dblTotal + dblNum Next intCount MessageBox.Show(Sum of the numbers is " & total.ToString) Slide 38 38 When to Use the Do While Loop Use Do While when the loop should repeat as long as the test expression is true Can be written as a pretest or posttest loop A pretest Do While is ideal when the body should not be perfomed for a test expression that is initially false Posttest loops are ideal when you always want the loop to iterate at least once Slide 39 39 When to Use the Do Until Loop Use Do Until when the loop should repeat as long as the test expression is false Can be written as a pretest or posttest loop A pretest Do Until is ideal when the body should not be perfomed for a test expression that is initially true Posttest loops are ideal when you always want the loop to iterate at least once Slide 40 40 When to Use the For Next Loop The For...Next loop is a pretest loop ideal when a counter is needed It automatically increments the counter variable at the end of each iteration The loop repeats as long as the counter variable is not greater than an end value Used primarily when the number of required iterations is known Slide 41 Nested Loops A Loop that is Inside Another Loop is Called a Nested Loop Slide 42 42 Nested Loops The body of a loop can contain any type of VB statements including another loop When a loop is found within the body of another loop, its called a nested loop Slide 43 43 Nested Loop Example For intHours = 0 To 24 lblHours.Text = intHours.ToString For intMinutes = 0 To 59 lblMinutes.Text = intMinutes.ToString For intSeconds = 0 To 59 lblSeconds.Text = intSeconds.ToString Next intSeconds Next intMinutes Next intHours A clock is an example of a nested loop Minute hand repeats 60 times for each hour Second hand repeats 60 times for each minute Slide 44 44 Nested Loop Example Analysis The innermost loop will iterate 60 times for each iteration of the middle loop The middle loop will iterate 60 times for each iteration of the outermost loop 24 iterations of the outermost loop require: 1,440 iterations of the middle loop 86,400 iterations of the innermost loop An inner loop goes through all its iterations for each iteration of the outer loop Multiply iterations of all loops to get the total iterations of the innermost loop Slide 45 Multicolumn List Boxes, Checked List Boxes and Combo Boxes A Multicolumn List Box Displays Items in Columns A Checked List Box Displays a Check Box Next to Each Item in the List A Combo Box Is Like a List Box Combined With a Text Box Slide 46 46 List Box Multicolumn Property The ListBox has a Multicolumn property Boolean property with default value of false If set to true, entries can appear side by side Below, ColumnWidth is set to 30 Note the appearance of a horizontal scroll bar in this case Slide 47 47 Example For intNumber = 0 To 100 lstNumbers.Items.Add(intNumber) Next Slide 48 48 Checked List Box One item at a time may be selected but many items in a Checked List Box can be checked The CheckOnClick property determines how items may be checked False - user clicks item once to select it, again to check it True - user clicks item only once to both select it and check it Slide 49 49 Finding the Status of Checked Items The GetItemChecked method returns true if the item at Index has been checked CheckedListBox.GetItemChecked(Index) Dim i as Integer Dim intCheckedCities as Integer = 0 For i = 0 to clbCities.Items.Count 1 If clbCities.GetItemChecked(i) = True Then intCheckedCities += 1 End If Next i MessageBox.Show(You checked & _ intCheckedCities.Tostring() & cities.) Slide 50 50 Combo Boxes Similar to List Boxes Both display a list of items to the user Both have Items, Items.Count, SelectedIndex, SelectedItem, and Sorted properties Both have Items.Add, Items.Clear, Items.Remove, and Items.RemoveAt methods These properties and methods work the same with combo boxes and list boxes Slide 51 51 Additional Combo Box Features A combo box also functions like a text box The user may enter text into a combo box Or the user may select the text from a series of list box type choices Slide 52 52 Combo Box Styles Simple Combo Box List is always shown Drop-down Combo Box List appears when user clicks down arrow User can type text or select Slide 53 53 Combo Box Styles Drop-down List Combo Box Behaves like a Drop-Down Combo Box, but the user may not enter text directly Slide 54 54 Choosing a Combo Box Style If restricting the user to select items listed If empty space use ListBox If limited space use drop-down list ComboBox If allowing user to select an item listed or enter an entirely new item If empty space use simple ComboBox If limited space use drop-down ComboBox Slide 55 Input Validation As Long As a User Enters Bad Input, the Application Will Produce Bad Output Applications Should Be Written to Filter Out Bad Input Slide 56 56 Examples of Input Validation Numbers are checked to ensure they are within a range of possible values For example, there are 168 hours in a week A person cant work more than 168 hours a week Values are checked for their reasonableness A person might possibly work 168 hours in a week However, this is highly improbable Items selected from a menu or a set of choices are checked to ensure these options are available Variables are checked for values that might cause problems, such as division by zero Slide 57 57 CausesValidation/Validating Event A controls Validating event is triggered when focus is shifting from that control to a control whose CausesValidation property is true The Validating event of the control losing the focus fires before focus is lost This allows your code to validate an entry just before focus shifts If user shifts focus, input must be complete Slide 58 58 The Validated Event A controls Validated event is triggered After the Validating event After focus has been lost Allows operations on input that should occur only after the user moves away from the field Slide 59 59 Select Text with SelectAll Method SelectAll makes correcting invalid input easier If you know which TextBox is in error you can: Use the Focus method to position the cursor Use the SelectAll method to select the text Then the user need not erase incorrect text Simply start typing to enter the corrected text If txtName is in error: txtName.Focus() txtName.SelectAll() Slide 60 60 Using the WithEnd Statement A With statement establishes a default object in effect until an End With is encountered Instead of repeating txtNum1 in this code With allows you to reference the txtNum1 object without specifying it repeatedly txtNum1.SelectionStart = 0 txtNum1.SelectionLength = txtNum1.Text.Length With txtNum1.SelectionStart = 0.SelectionLength =.Text.Length End With Slide 61 Tool Tips Tool Tips Are a Standard, Convenient Way of Providing Help to Users of an Application The ToolTip Control Allows You to Assign Pop-up Hints to the Other Controls on a Form Slide 62 62 What is a Tool Tip? A Tool Tip is the short text message you see when holding the mouse over a control These are easy to set up and use in Visual Basic forms The ToolTip control allows you to create ToolTips for other controls on a form Slide 63 63 Setting Up ToolTips Display the form design window Double-click the ToolTip tool in the Toolbox The ToolTip control is invisible at runtime so It appears in the component tray, not the form Component tray shows at the bottom of the design window ToolTips are now enabled for this form Form controls now have a ToolTip property This new property holds the text string that will be displayed for that control Slide 64 64 Controlling the Tool Tips Select the ToolTip control from the tray View Properties window to see the following An InitialDelay property that regulates the delay before a tip appears An AutoPopDelay that determines how long a tip is displayed ReshowDelay determines the time between the display of different tips as the user moves the mouse from control to control