//--------------------------------------------------------------------------------
/// <summary>
/// Shows the task dialog box.
/// </summary>
/// <param name="Title">The title.</param>
/// <param name="MainInstruction">The main instruction.</param>
/// <param name="Content">The content.</param>
/// <param name="ExpandedInfo">The expanded info.</param>
/// <param name="Footer">The footer.</param>
/// <param name="VerificationText">The verification text.</param>
/// <param name="RadioButtons">The radio buttons.</param>
/// <param name="CommandButtons">The command buttons.</param>
/// <param name="Buttons">The buttons.</param>
/// <param name="MainIcon">The main icon.</param>
/// <param name="FooterIcon">The footer icon.</param>
/// <returns></returns>
public static DialogResult ShowTaskDialogBox( string Title,
string MainInstruction,
string Content,
string ExpandedInfo,
string Footer,
string VerificationText,
string RadioButtons,
string CommandButtons,
TaskDialogButtons Buttons,
SysIcons MainIcon,
SysIcons FooterIcon )
{
if ( VistaTaskDialog.IsAvailableOnThisOS && !ForceEmulationMode ) {
// [OPTION 1] Show Vista TaskDialog
VistaTaskDialog vtd = new VistaTaskDialog ( );
vtd.WindowTitle = Title;
vtd.MainInstruction = MainInstruction;
vtd.Content = Content;
vtd.ExpandedInformation = ExpandedInfo;
vtd.Footer = Footer;
// Radio Buttons
if ( RadioButtons != "" ) {
List<VistaTaskDialogButton> lst = new List<VistaTaskDialogButton> ( );
string[ ] arr = RadioButtons.Split ( new char[ ] { '|' } );
for ( int i = 0; i < arr.Length; i++ ) {
try {
VistaTaskDialogButton button = new VistaTaskDialogButton ( );
button.ButtonId = 1000 + i;
button.ButtonText = arr[ i ];
lst.Add ( button );
} catch ( FormatException ) {
}
}
vtd.RadioButtons = lst.ToArray ( );
}
// Custom Buttons
if ( CommandButtons != "" ) {
List<VistaTaskDialogButton> lst = new List<VistaTaskDialogButton> ( );
string[ ] arr = CommandButtons.Split ( new char[ ] { '|' } );
for ( int i = 0; i < arr.Length; i++ ) {
try {
VistaTaskDialogButton button = new VistaTaskDialogButton ( );
button.ButtonId = 2000 + i;
button.ButtonText = arr[ i ];
lst.Add ( button );
} catch ( FormatException ) {
}
}
vtd.Buttons = lst.ToArray ( );
}
switch ( Buttons ) {
case TaskDialogButtons.YesNo:
vtd.CommonButtons = VistaTaskDialogCommonButtons.Yes | VistaTaskDialogCommonButtons.No;
break;
case TaskDialogButtons.YesNoCancel:
vtd.CommonButtons = VistaTaskDialogCommonButtons.Yes | VistaTaskDialogCommonButtons.No | VistaTaskDialogCommonButtons.Cancel;
break;
case TaskDialogButtons.OKCancel:
vtd.CommonButtons = VistaTaskDialogCommonButtons.Ok | VistaTaskDialogCommonButtons.Cancel;
break;
case TaskDialogButtons.OK:
vtd.CommonButtons = VistaTaskDialogCommonButtons.Ok;
break;
case TaskDialogButtons.Close:
vtd.CommonButtons = VistaTaskDialogCommonButtons.Close;
break;
case TaskDialogButtons.Cancel:
vtd.CommonButtons = VistaTaskDialogCommonButtons.Cancel;
break;
default:
vtd.CommonButtons = 0;
break;
}
switch ( MainIcon ) {
case SysIcons.Information:
vtd.MainIcon = VistaTaskDialogIcon.Information;
break;
case SysIcons.Question:
vtd.MainIcon = VistaTaskDialogIcon.Information;
break;
case SysIcons.Warning:
vtd.MainIcon = VistaTaskDialogIcon.Warning;
break;
case SysIcons.Error:
vtd.MainIcon = VistaTaskDialogIcon.Error;
break;
}
switch ( FooterIcon ) {
case SysIcons.Information:
vtd.FooterIcon = VistaTaskDialogIcon.Information;
break;
case SysIcons.Question:
vtd.FooterIcon = VistaTaskDialogIcon.Information;
break;
case SysIcons.Warning:
vtd.FooterIcon = VistaTaskDialogIcon.Warning;
break;
case SysIcons.Error:
vtd.FooterIcon = VistaTaskDialogIcon.Error;
break;
}
vtd.EnableHyperlinks = false;
vtd.ShowProgressBar = false;
vtd.AllowDialogCancellation = ( Buttons == TaskDialogButtons.Cancel ||
Buttons == TaskDialogButtons.Close ||
Buttons == TaskDialogButtons.OKCancel ||
Buttons == TaskDialogButtons.YesNoCancel );
vtd.CallbackTimer = false;
vtd.ExpandedByDefault = false;
vtd.ExpandFooterArea = false;
vtd.PositionRelativeToWindow = true;
vtd.RightToLeftLayout = false;
vtd.NoDefaultRadioButton = false;
vtd.CanBeMinimized = false;
vtd.ShowMarqueeProgressBar = false;
vtd.UseCommandLinks = ( CommandButtons != "" );
vtd.UseCommandLinksNoIcon = false;
vtd.VerificationText = VerificationText;
vtd.VerificationFlagChecked = false;
vtd.ExpandedControlText = "Hide details";
vtd.CollapsedControlText = "Show details";
vtd.Callback = null;
// Show the Dialog
DialogResult result = ( DialogResult ) vtd.Show ( ( vtd.CanBeMinimized ? null : Form.ActiveForm ), out VerificationChecked, out RadioButtonResult );
// if a command button was clicked, then change return result
// to "DialogResult.OK" and set the CommandButtonResult
if ( ( int ) result >= 2000 ) {
CommandButtonResult = ( ( int ) result - 2000 );
result = DialogResult.OK;
}
if ( RadioButtonResult >= 1000 )
RadioButtonResult -= 1000; // deduct the ButtonID start value for radio buttons
return result;
} else {
// [OPTION 2] Show Emulated Form
TaskDialogForm td = new TaskDialogForm ( );
td.Title = Title;
td.MainInstruction = MainInstruction;
td.Content = Content;
td.ExpandedInfo = ExpandedInfo;
td.Footer = Footer;
td.RadioButtons = RadioButtons;
td.CommandButtons = CommandButtons;
td.Buttons = Buttons;
td.MainIcon = MainIcon;
td.FooterIcon = FooterIcon;
td.VerificationText = VerificationText;
td.Width = EmulatedFormWidth;
td.BuildForm ( );
DialogResult result = td.ShowDialog ( );
RadioButtonResult = td.RadioButtonIndex;
CommandButtonResult = td.CommandButtonClickedIndex;
VerificationChecked = td.VerificationCheckBoxChecked;
return result;
}
}