Dialogs
In this part of the Visual Basic Winforms tutorial, we will talk about dialogs.
Dialog windows or dialogs are an indispensable part of most modern GUI applications. A dialog is defined as a conversation between two or more persons. In a computer application a dialog is a window which is used to "talk" to the application. A dialog is used to input data, modify data, change the application settings etc. Dialogs are important means of communication between a user and a computer program.
There are essentially two types of dialogs. Predefined dialogs and custom dialogs.
FolderBrowserDialog
This dialog prompts the user to select a folder.
' ZetCode Mono Visual Basic Winforms tutorial
'
' In this program we select a directory with a
' FolderBrowser dialog. The selected directory's
' name is shown in the statusbar.
'
' author jan bodnar
' last modified May 2009
' website www.zetcode.com
Imports System.Windows.Forms
Imports System.Drawing
Public Class WinVBApp
Inherits Form
Dim statusbar As StatusBar
Public Sub New
Me.Text = "FolderBrowserDialog"
Me.Size = New Size(300, 250)
Me.InitUI
Me.CenterToScreen
End Sub
Private Sub InitUI
Dim toolbar As New ToolBar
Dim open As New ToolBarButton
statusbar = New StatusBar
statusbar.Parent = Me
toolbar.Buttons.Add(open)
Me.Controls.Add(toolbar)
AddHandler toolbar.ButtonClick, AddressOf Me.OnClicked
End Sub
Private Sub OnClicked(ByVal sender As Object, _
ByVal e As ToolBarButtonClickEventArgs)
Dim dialog As New FolderBrowserDialog
If dialog.ShowDialog(Me) = DialogResult.OK
statusbar.Text = dialog.SelectedPath
End If
End Sub
Public Shared Sub Main
Application.Run(New WinVBApp)
End Sub
End Class
We have a toolbar and one toolbar button. By clicking on the button, the FolderBrowserDialog appears on the screen. The name of the selected folder is shown in the statusbar.
Dim dialog As New FolderBrowserDialog
The FolderBrowserDialog is created.
If dialog.ShowDialog(Me) = DialogResult.OK
statusbar.Text = dialog.SelectedPath
End If
The ShowDialog method shows the dialog on the screen. If we click on the OK button of the dialog, the selected directory path is shown on the statusbar.
ColorDialog
This dialog displays available colors along with controls that enable the user to define custom colors.
' ZetCode Mono Visual Basic Winforms tutorial
'
' In this program we use the ColorDialog
' to change a color of a rectangle
'
' author jan bodnar
' last modified May 2009
' website www.zetcode.com
Imports System.Windows.Forms
Imports System.Drawing
Public Class WinVBApp
Inherits Form
Private col As Color
Private Const rectWidth As Integer = 100
Private Const rectHeight As Integer = 100
Private Dim r As Rectangle
Public Sub New
Me.Text = "ColorDialog"
Me.Size = New Size(300, 250)
Me.InitUI
Me.CenterToScreen
End Sub
Private Sub InitUI
Dim tbar As New ToolBar
Dim open As New ToolBarButton
col = Color.Blue
tbar.Buttons.Add(open)
Me.LocateRect
Me.SetStyle(ControlStyles.ResizeRedraw, True)
Controls.Add(tbar)
AddHandler Me.Paint, AddressOf Me.OnPaint
AddHandler tbar.ButtonClick, AddressOf Me.OnClicked
End Sub
Private Sub OnPaint(ByVal sender As Object, ByVal e As PaintEventArgs)
Dim g As Graphics = e.Graphics
Me.LocateRect
Dim brsh As New SolidBrush(col)
g.FillRectangle(brsh, r)
End Sub
Private Sub OnClicked(ByVal sender As Object, _
ByVal e As ToolBarButtonClickEventArgs)
Dim dialog As New ColorDialog
If dialog.ShowDialog(Me) = DialogResult.OK
col = dialog.Color
Me.Invalidate
End If
End Sub
Private Sub LocateRect
Dim x As Integer = (Me.ClientSize.Width - rectWidth) / 2
Dim y As Integer = (Me.ClientSize.Height - rectHeight) / 2
r = New Rectangle(x, y, rectWidth, rectHeight)
End Sub
Public Shared Sub Main
Application.Run(New WinVBApp)
End Sub
End Class
In this code example, we use the ColorDialog to choose a color for a rectangle, that is located in the middle of the form control.
col = Color.Blue
At the beginning, the color of the rectangle is blue. We use the col variable to determine the color of the rectangle.
Dim dialog As New ColorDialog
The ColorDialog is created.
If dialog.ShowDialog(Me) = DialogResult.OK col = dialog.Color Me.Invalidate End If
The code shows the color dialog. If we click on the OK button, we get the selected color and call the Invalidate method. The method invalidates the entire surface of the control and causes the control to be redrawn. The result is that the rectangle is drawn with a new color value.
FontDialog
The FontDialog is used to select fonts.
' ZetCode Mono Visual Basic Winforms tutorial
'
' In this program we use the FontDialog
' to change a font of a label
'
' author jan bodnar
' last modified May 2009
' website www.zetcode.com
Imports System.Windows.Forms
Imports System.Drawing
Public Class WinVBApp
Inherits Form
Private Dim txt As Label
Public Sub New
Me.Text = "FontDialog"
Me.Size = New Size(300, 250)
Me.InitUI
Me.CenterToScreen
End Sub
Private Sub InitUI
Dim tbar As New ToolBar
tbar.Parent = Me
Dim open As New ToolBarButton
tbar.Buttons.Add(open)
txt = New Label
txt.Parent = Me
txt.Text = "Winforms tutorial"
Me.LocateText
txt.AutoSize = True
AddHandler Me.Resize, AddressOf Me.OnResize
AddHandler tbar.ButtonClick, AddressOf Me.OnClicked
End Sub
Private Sub OnClicked(ByVal sender As Object, _
ByVal e As ToolBarButtonClickEventArgs)
Dim dialog As New FontDialog
If dialog.ShowDialog(Me) = DialogResult.OK
txt.Font = dialog.Font
Me.LocateText
End If
End Sub
Private Sub LocateText
txt.Top = (Me.ClientSize.Height - txt.Height) / 2
txt.Left = (Me.ClientSize.Width - txt.Width) / 2
End Sub
Private Sub OnResize(ByVal sender As Object, ByVal e As EventArgs)
Me.LocateText
End Sub
Public Shared Sub Main
Application.Run(New WinVBApp)
End Sub
End Class
We draw some text in the middle of the form control. We use the font dialog to change font for this text.
Dim dialog As New FontDialog
FontDialog is created.
If dialog.ShowDialog(Me) = DialogResult.OK txt.Font = dialog.Font Me.LocateText End If
When we click on the OK button, we set a newly selected font for the Label control. Because the size of the text changes with different fonts, we must call the LocateText method, which locates the text in the middle of the form control.
OpenDialog
This dialog is used to open files.
' ZetCode Mono Visual Basic Winforms tutorial
'
' In this program we use the OpenDialog to
' open a file and show its contents in
' a TextBox control
'
' author jan bodnar
' last modified May 2009
' website www.zetcode.com
Imports System.Windows.Forms
Imports System.Drawing
Imports System.IO
Public Class WinVBApp
Inherits Form
Private txtBox As TextBox
Public Sub New
Me.Text = "OpenDialog"
Me.Size = New Size(300, 250)
Me.InitUI
Me.CenterToScreen
End Sub
Private Sub InitUI
Dim tbar As New ToolBar
tbar.Parent = Me
Dim open As New ToolBarButton
tbar.Buttons.Add(open)
txtBox = New TextBox
txtBox.Parent = Me
txtBox.Multiline = True
txtBox.ScrollBars = ScrollBars.Both
txtBox.WordWrap = False
txtBox.Parent = Me
txtBox.Dock = DockStyle.Fill
AddHandler tbar.ButtonClick, AddressOf Me.OnClicked
End Sub
Private Sub OnClicked(ByVal sender As Object, _
ByVal e As ToolBarButtonClickEventArgs)
Dim dia As New OpenFileDialog
dia.Filter = "VB files (*.vb)|*.vb"
If dia.ShowDialog(Me) = DialogResult.OK
Dim reader As New StreamReader(dia.FileName)
Dim data As String = reader.ReadToEnd
reader.Close
txtBox.Text = data
End If
End Sub
Public Shared Sub Main
Application.Run(New WinVBApp)
End Sub
End Class
We use the OpenDialog control to open VB source files. We have a TextBox control, where we display the file.
Dim dia As New OpenFileDialog
The OpenDialog is created.
dia.Filter = "VB files (*.vb)|*.vb"
We set the Filter property to VB source files. Only VB files can be chosen with this dialog instance.
If dia.ShowDialog(Me) = DialogResult.OK
Dim reader As New StreamReader(dia.FileName)
Dim data As String = reader.ReadToEnd
reader.Close
txtBox.Text = data
End If
After clicking OK, we read the contents of the chosen file and put it into the TextBox control.
In this part of the Visual Basic Winforms tutorial, we showed various dialogs.