VDialog
using LockSystem feature.
Sample customized VDialog
.
Sample security VDialog
.
Expandable VDialog
with footer (RightToLeft
property set to RightToLeft.Yes
and RightToLeftLayout
property set to True
).
Introduction
Many programmers would like to use Windows Vista TaskDialog on earlier systems like Windows 2000/XP. Unfortunately this is not possible.
There are some TaskDialog implementations on the Internet, but none of them are written in VB.NET. I decided to write my own version of a TaskDialog-like form with all the functionality of Vista TaskDialog. It is almost fully compatible with the MessageBox
class. And there are some features of Vista TaskDialog implemented (the rest of them will be implemented later). Some features, which are not implemented, can be emulated using custom controls (like radio buttons or progress bar — see the first screenshot above).
Using the Code
The VDialog
class is compatible with the MessageBox
class so it can be used in the same way, e.g.:
VDialog.Show(Me, "Text", "Caption", MessageBoxButtons.YesNo, MessageBoxIcon.Error)
To customize the appearance of VDialog
, one must create a VDialog
object, set its properties and then invoke the Show()
method, e.g.:
Dim vd As New VDialog()
With vd
.WindowTitle = "Windows Vista"
.Owner = Me
.MainInstruction = "You must click OK button to continue"
.Buttons = New VDialogButton() _
{ New VDialogButton(VDialogResult.OK), _
New VDialogButton(VDialogResult.Continue) }
.MainIcon = VDialogIcon.SecurityShieldBlue
.DefaultButton = VDialogDefaultButton.None
.Content = "If you don't know what to do, click Cancel button."
.LockSystem = True
.CustomControl = New MyCustomControl()
.Show()
End With
Features
Almost Full Compatibility with the MessageBox Class
Existing code can be easily changed to one which uses the VDialog
class instead of the MessageBox
class by changing the MessageBox.Show(…)
invocation to the VDialog.Show(…)
invocation.
Supported methods:
Show(String) As DialogResult
Show(String, String) As DialogResult
Show(String, String, MessageBoxButtons) As DialogResult
Show(String, String, MessageBoxButtons, MessageBoxIcon) As DialogResult
Show(String, String, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton) _
As DialogResult
Show(String, String, MessageBoxButtons, MessageBoxIcon, _
MessageBoxDefaultButton, MessageBoxOptions) As DialogResult
Show(IWin32Window, String) As DialogResult
Show(IWin32Window, String, String) As DialogResult
Show(IWin32Window, String, String, MessageBoxButtons) As DialogResult
Show(IWin32Window, String, String, MessageBoxButtons, MessageBoxIcon) As DialogResult
Show(IWin32Window, String, String, MessageBoxButtons, _
MessageBoxIcon, MessageBoxDefaultButton) As DialogResult
Advanced Usage
The VDialog
class can also be used in another way. One can create a VDialog
object and set its properties, such as:
Owner
— Determines the parent of the VDialog
message window.
Content
, ContentLinks
,
WindowTitle
and MainInstruction
— Determines the content of the dialog window which will be displayed, the caption of the window, and the main instruction.
Buttons
— Determines what buttons will be displayed on the VDialog
message window. VDialogButton
is a class containing UseCustomText
, Text
and VDialogResult
properties, and also a Click
event which is raised when the associated button is clicked (but before closing the window).
MainIcon
, CustomMainIcon
— The image shown at the left side of the window (or right side when right-to-left layout is used).
DefaultButton
— Determines which button is initially focused.
RightToLeft
and RightToLeftLayout
— Determines whether the layout of the window should be "mirrored".
Result
— Indicates the return value of the VDialog
window.
LockSystem
— Enables the UAC-like system locking behavior.
CustomControl
— Provides an easy way to extend the VDialog
window. It can be used to emulate the features of TaskDialog which are not supported yet.
VerificationText
and VerificationFlagChecked
— Manages the check box shown at the left side of the buttons. It can be used for "Don't show it again"-like check boxes.
Sound
— Played when the dialog window is shown.
FooterText
, FooterLinks
,
FooterIcon
and CustomFooterIcon
— Determines the text and the image of the footer.
ExpandedInformation
, ExpandedInformationLinks
, ExpandFooterArea
, ExpandedByDefault
, ExpandedControlText
and CollapsedControlText
— determines the look and behavior of the expand control and label with extra information.
Localization Support
The captions of the standard buttons (e.g. OK, Yes, Ignore, etc.) can be easily localized by translating the resources file. The English versions of these captions are contained in the Resources.resx file.
Images
The VDialogIcon
class contains twelve read-only fields which provide access to Vista-like images, such as:
- —
Information
- —
Question
- —
Warning
- —
Error
- —
SecurityShield
, SecurityShieldBlue
, SecurityShieldGray
- —
SecuritySuccess
- —
SecurityQuestion
- —
SecurityWarning
- —
SecurityError
- There is also the
None
field.
Assigning the VDialogIcon.Security*
field (except the SecurityShield
) to the MainIcon
property of the VDialog
class causes the appropriate gradient to be drawn beneath the icon and main instruction.
Sounds
The VDialogSound
class provides access to six sounds (Default
, Information
, Question
, Warning
, Error
, Security
) that can be assigned to the Sound
property of the VDialog
class. Custom sound can be provided by an object which implements the ISound
interface.
Command Links
There is an animated CommandLink
control which can be used to build a custom control and then embed it in the VDialog
.
TODO
Although the VDialog
class provides many useful properties, there are some features of TaskDialog that my VDialog
does not implement yet, such as:
- Full support for CommandLinks
- RadioButtons
- ProgressBar
- Timer
These features can only be obtained by using custom controls.
History
- 1.5 (15.10.2008) — Important! This is the last “standalone” version of the control. The next version is included in a new project hosted at CodePlex.
- Parent window no longer loses focus in certain situations on Windows Vista
- Added
HotForeColor
property to the CommandLink
control
- Added German localization (I would be grateful if someone checked it with German Windows Vista)
- Fixed some bugs
- 1.4 (02.01.2008)
- Added support for Links
- Fixed some bugs
- 1.3 (12.12.2007)
- Added partial support for CommandLinks
- Added support for elevation (shield) icon
- Fixed some bugs
- 1.2 (05.12.2007)
- Added XML documentation
- Added
Close
method to the VDialog
class
- Added license
- Minor bugs fixed
- 1.1 (18.11.2007)
- Renamed some properties so they are compliant with TaskDialog
- Added sounds support
- Added footer support
- Added expandable information support
- Added support for security dialogs
- Minor bugs fixed
- 1.0
- 11.11.2007 — Added Vista-like images
- 07.11.2007 — First version