VB Procedures Procedures . Sub procedure: Private/Public Sub SubName(Arguments) … End Sub Private: Can only be accessed by procedures in the same form. Public: Can be accessed by procedures in other forms. • To call a sub procedure SUB1 • Call SUB1(Argument1, Argument2, …) Function • Private Function tax(salary) As Double • tax = salary * 0.1 • End Function – Or • Private Function tax(salary) • Return salary * 0.1 • End Function Creating a IsAlphaNumeric(string) Function • IsNumeric: test a string • IsDigit, IsLetter, IsLetterOrDigit: test a char – Char.IsLetterOrDigit(char) Function IsAlphaNumeric(ByVal aString As String) As Boolean Dim i As Integer = 0 Dim AlphaNumeric As Boolean = True For i = 0 To aString.Length - 1 If Not Char.IsLetterOrDigit(aString.Substring(i, 1)) Then AlphaNumeric = False Exit For End If Next If AlphaNumeric = True Then IsAlphaNumeric = True Else IsAlphaNumeric = False End If End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If IsAlphaNumeric(TextBox1.Text) Then MessageBox.Show("textbox1 is alphanumeric") Else MessageBox.Show("textbox1 is not alphanumeric") End If End Sub Call by Reference Call by Value • ByRef – The address of the item is passed. Any changes made to the passing variable are made to the variable itself. • ByVal – Default – Only the variable’s value is passed. ByRef, ByVal example Private Sub Command1_Click() Dim myStr As String myStr = TextBox1.Text Call ChangeTextRef (myStr) TextBox1.Text = myStr End Sub Private Sub ChangeTextRef(ByRef strInput As String) strInput = "New Text" End Sub Input, Output Arguments Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim sal, tax As Single sal = CSng(TextBox1.Text) Call CalTax(sal, tax) TextBox2.Text = tax.ToString End Sub Private Sub CalTax(ByVal Salary As Single, ByRef Tax As Single) Tax = 0.1 * Salary End Sub Can we pass the Tax ByVal? Static Variables • Static VariableName as DataType • Static variables are local variables but are not destroyed when a procedure terminates. Their value are kept. Static Variable Example Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Static clickCounter As Integer = 0 clickCounter += 1 If clickCounter > 3 Then MsgBox("Sorry, you can only click 3 times!") Button1.Enabled = False End If End Sub Event Procedures • Example: – Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click • The Handles keyword – Procedure name may change • Handling multiple events: – Private Sub AllButtons_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.CLick Using One Event Handler to Handle Events Generated by Many Controls • Assume we have 3 buttons. • Use the Handles clause in the event procedure to associate controls with the event procedure. • We can assign a value for each control’s Tag property, or use control’s TabIndex property to determine which control generates the event. Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click If sender.tag = "1" Then MessageBox.Show("button 1 clicked") ElseIf sender.tag = "2" Then MessageBox.Show("button 2 clicked") Else MessageBox.Show("button 3 clicked") End If End Sub Note: VB IntelliSense will not show the Tag property after you type sender. Early Binding/Late Binding • Early binding: VB compiler knows the object’s data type. It enables the use of IntelliSense. • Late binding: VB compiler can’t determine the type of object that we are calling. This occurs because the object is declared as Object data type. Demo: Phone Simulator Menu Main Menu Control – Add MainMenu control and follow the TypeHere instruction. – Each submenu and each item on a submenu is represented by a MenuItem control. – Use an & to specify an access key in the caption. Ex. &File, Sho&s – Write an event procedure for each menu item. • Shortcut keys – Select the Shortcut key property in the MenuItem’s property window. – Select the Shorcut key from list. – Set ShowShortcut property to true. • Separator bar – Right clock a menu item/Insert Separator • Inserting, deleting a menu item – Right click and select the option. • Rearranging menu items – dragging Context Menu • A context menu is a menu that displays when an object on the screen is rightclicked. • Add the ContextMenu control (it is placed in a tray under the form). Right-click the control and choose Edit to create the menu. • Use the object’s ContextMenu property to bind the object to the context menu. Simple Text Editor • Textbox’s properties, methods – Help – Object Browser • System.Windows.Forms – Cut, Copy, Paste, Undo, SelectAll, etc. • Menu: Undo, Copy, Cut, Paste, SelectAll, Search • Clipboard: – Clipboard.SetDataObject(TextBox1.SelectedText) – Clipboard.GetDataObject.GetData(DataFormats.Text) FontDialog Control • If FontDialog1.ShowDialog() = DialogResult.OK Then • TextBox1.Font = FontDialog1.Font • End If