210 likes | 242 Vues
A comprehensive guide on creating and managing VB.Net procedures, functions, event handlers, call by reference/value, static variables, event procedures, early vs late binding, and creating context menus in a text editor.
E N D
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.
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 right-clicked. • 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