Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / MessageBox.cs / 1 / MessageBox.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Windows.Forms { using Microsoft.Win32; using System; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.Runtime.Remoting; using System.Runtime.InteropServices; using System.Windows.Forms; using System.Collections; ////// /// public class MessageBox { private const int IDOK = 1; private const int IDCANCEL = 2; private const int IDABORT = 3; private const int IDRETRY = 4; private const int IDIGNORE = 5; private const int IDYES = 6; private const int IDNO = 7; private const int HELP_BUTTON = 0x00004000; [ ThreadStatic ] private static HelpInfo[] helpInfoTable; ////// Displays a /// message box that can contain text, buttons, and symbols that /// inform and instruct the /// user. /// ////// /// This constructor is private so people aren't tempted to try and create /// instances of these -- they should just use the static show /// methods. /// private MessageBox() { } private static DialogResult Win32ToDialogResult(int value) { switch (value) { case IDOK: return DialogResult.OK; case IDCANCEL: return DialogResult.Cancel; case IDABORT: return DialogResult.Abort; case IDRETRY: return DialogResult.Retry; case IDIGNORE: return DialogResult.Ignore; case IDYES: return DialogResult.Yes; case IDNO: return DialogResult.No; default: return DialogResult.No; } } internal static HelpInfo HelpInfo { get { // unfortunately, there's no easy way to obtain handle of a message box. // we'll have to rely on the fact that modal message loops have to pop off in an orderly way. if (helpInfoTable != null && helpInfoTable.Length > 0) { // the top of the stack is actually at the end of the array. return helpInfoTable[helpInfoTable.Length - 1]; } return null; } } private static void PopHelpInfo() { // we roll our own stack here because we want a pretty lightweight implementation. // usually there's only going to be one message box shown at a time. But if // someone shows two message boxes (say by launching them via a WM_TIMER message) // we've got to gracefully handle the current help info. if (helpInfoTable == null) { Debug.Fail("Why are we being called when there's nothing to pop?"); } else { if (helpInfoTable.Length == 1) { helpInfoTable = null; } else { int newCount = helpInfoTable.Length -1; HelpInfo[] newTable = new HelpInfo[newCount]; Array.Copy(helpInfoTable, newTable, newCount); helpInfoTable = newTable; } } } private static void PushHelpInfo(HelpInfo hpi) { // we roll our own stack here because we want a pretty lightweight implementation. // usually there's only going to be one message box shown at a time. But if // someone shows two message boxes (say by launching them via a WM_TIMER message) // we've got to gracefully handle the current help info. int lastCount = 0; HelpInfo[] newTable; if (helpInfoTable == null) { newTable = new HelpInfo[lastCount+1]; } else { // if we already have a table - allocate a new slot lastCount = helpInfoTable.Length; newTable = new HelpInfo[lastCount+1]; Array.Copy(helpInfoTable, newTable, lastCount); } newTable[lastCount] = hpi; helpInfoTable = newTable; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// //START WHIDBEY ADDS // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////// /// public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options,bool displayHelpButton) { return ShowCore(null, text, caption, buttons, icon, defaultButton, options, displayHelpButton); } ////// Displays a message box with specified text, caption, and style with Help Button. /// ////// /// public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, string helpFilePath) { HelpInfo hpi = new HelpInfo(helpFilePath); return ShowCore(null, text, caption, buttons, icon, defaultButton, options, hpi); } ////// Displays a message box with specified text, caption, style and Help file Path . /// ////// /// public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, string helpFilePath) { HelpInfo hpi = new HelpInfo(helpFilePath); return ShowCore(owner, text, caption, buttons, icon, defaultButton, options, hpi); } ////// Displays a message box with specified text, caption, style and Help file Path for a IWin32Window. /// ////// /// public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, string helpFilePath, string keyword) { HelpInfo hpi = new HelpInfo(helpFilePath, keyword); return ShowCore(null, text, caption, buttons, icon, defaultButton, options, hpi); } ////// Displays a message box with specified text, caption, style, Help file Path and keyword. /// ////// /// public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, string helpFilePath, string keyword) { HelpInfo hpi = new HelpInfo(helpFilePath, keyword); return ShowCore(owner, text, caption, buttons, icon, defaultButton, options, hpi); } ////// Displays a message box with specified text, caption, style, Help file Path and keyword for a IWin32Window. /// ////// /// public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options,string helpFilePath, HelpNavigator navigator) { HelpInfo hpi = new HelpInfo(helpFilePath, navigator); return ShowCore(null, text, caption, buttons, icon, defaultButton, options, hpi); } ////// Displays a message box with specified text, caption, style, Help file Path and HelpNavigator. /// ////// /// public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, string helpFilePath, HelpNavigator navigator) { HelpInfo hpi = new HelpInfo(helpFilePath, navigator); return ShowCore(owner, text, caption, buttons, icon, defaultButton, options, hpi); } ////// Displays a message box with specified text, caption, style, Help file Path and HelpNavigator for IWin32Window. /// ////// /// public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options,string helpFilePath, HelpNavigator navigator, object param) { HelpInfo hpi = new HelpInfo(helpFilePath, navigator, param); return ShowCore(null, text, caption, buttons, icon, defaultButton, options, hpi); } ////// Displays a message box with specified text, caption, style, Help file Path ,HelpNavigator and object. /// ////// /// public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, string helpFilePath, HelpNavigator navigator, object param) { HelpInfo hpi = new HelpInfo(helpFilePath, navigator, param); return ShowCore(owner, text, caption, buttons, icon, defaultButton, options, hpi); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// //END ADD // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////// Displays a message box with specified text, caption, style, Help file Path ,HelpNavigator and object for a IWin32Window. /// ////// /// public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options) { return ShowCore(null, text, caption, buttons, icon, defaultButton, options, false); } ////// Displays a message box with specified text, caption, and style. /// ////// /// public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton) { return ShowCore(null, text, caption, buttons, icon, defaultButton, 0, false); } ////// Displays a message box with specified text, caption, and style. /// ////// /// public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon) { return ShowCore(null, text, caption, buttons, icon, MessageBoxDefaultButton.Button1, 0, false); } ////// Displays a message box with specified text, caption, and style. /// ////// /// public static DialogResult Show(string text, string caption, MessageBoxButtons buttons) { return ShowCore(null, text, caption, buttons, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, 0, false); } ////// Displays a message box with specified text, caption, and style. /// ////// /// public static DialogResult Show(string text, string caption) { return ShowCore(null, text, caption, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, 0, false); } ////// Displays a message box with specified text and caption. /// ////// /// public static DialogResult Show(string text) { return ShowCore(null, text, String.Empty, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, 0, false); } ////// Displays a message box with specified text. /// ////// /// public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options) { return ShowCore(owner, text, caption, buttons, icon, defaultButton, options, false); } ////// Displays a message box with specified text, caption, and style. /// ////// /// public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton) { return ShowCore(owner, text, caption, buttons, icon, defaultButton, 0, false); } ////// Displays a message box with specified text, caption, and style. /// ////// /// public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon) { return ShowCore(owner, text, caption, buttons, icon, MessageBoxDefaultButton.Button1, 0, false); } ////// Displays a message box with specified text, caption, and style. /// ////// /// public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons) { return ShowCore(owner, text, caption, buttons, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, 0, false); } ////// Displays a message box with specified text, caption, and style. /// ////// /// public static DialogResult Show(IWin32Window owner, string text, string caption) { return ShowCore(owner, text, caption, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, 0, false); } ////// Displays a message box with specified text and caption. /// ////// /// public static DialogResult Show(IWin32Window owner, string text) { return ShowCore(owner, text, String.Empty, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, 0, false); } private static DialogResult ShowCore(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, HelpInfo hpi) { DialogResult result = DialogResult.None; try { PushHelpInfo(hpi); result = ShowCore(owner, text, caption, buttons, icon, defaultButton, options, true); } finally { PopHelpInfo(); } return result; } private static DialogResult ShowCore(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, bool showHelp) { if (!ClientUtils.IsEnumValid(buttons, (int)buttons, (int)MessageBoxButtons.OK, (int)MessageBoxButtons.RetryCancel)){ throw new InvalidEnumArgumentException("buttons", (int)buttons, typeof(MessageBoxButtons)); } // valid values are 0x0 0x10 0x20 0x30 0x40, chop off the last 4 bits and check that it's between 0 and 4. if (!WindowsFormsUtils.EnumValidator.IsEnumWithinShiftedRange(icon, /*numBitsToShift*/4, /*min*/0x0,/*max*/0x4)) { throw new InvalidEnumArgumentException("icon", (int)icon, typeof(MessageBoxIcon)); } // valid values are 0x0 0x100, 0x200, chop off the last 8 bits and check that it's between 0 and 2. if (!WindowsFormsUtils.EnumValidator.IsEnumWithinShiftedRange(defaultButton, /*numBitsToShift*/8, /*min*/0x0,/*max*/0x2)) { throw new InvalidEnumArgumentException("defaultButton", (int)defaultButton, typeof(DialogResult)); } // options intentionally not verified because we don't expose all the options Win32 supports. if (!SystemInformation.UserInteractive && (options & (MessageBoxOptions.ServiceNotification | MessageBoxOptions.DefaultDesktopOnly)) == 0) { throw new InvalidOperationException(SR.GetString(SR.CantShowModalOnNonInteractive)); } if (owner != null && (options & (MessageBoxOptions.ServiceNotification | MessageBoxOptions.DefaultDesktopOnly)) != 0) { throw new ArgumentException(SR.GetString(SR.CantShowMBServiceWithOwner), "options"); } if (showHelp && (options & (MessageBoxOptions.ServiceNotification | MessageBoxOptions.DefaultDesktopOnly)) != 0) { throw new ArgumentException(SR.GetString(SR.CantShowMBServiceWithHelp), "options"); } IntSecurity.SafeSubWindows.Demand(); int style = (showHelp) ? HELP_BUTTON : 0; style |= (int) buttons | (int) icon | (int) defaultButton | (int) options; IntPtr handle = IntPtr.Zero; if (showHelp || ((options & (MessageBoxOptions.ServiceNotification | MessageBoxOptions.DefaultDesktopOnly)) == 0)) { if (owner == null) { handle = UnsafeNativeMethods.GetActiveWindow(); } else { handle = Control.GetSafeHandle(owner); } } IntPtr userCookie = IntPtr.Zero; if (Application.UseVisualStyles) { // Activate theming scope to get theming for controls at design time and when hosted in browser. // NOTE: If a theming context is already active, this call is very fast, so shouldn't be a perf issue. userCookie = UnsafeNativeMethods.ThemingScope.Activate(); } Application.BeginModalMessageLoop(); DialogResult result; try { result = Win32ToDialogResult(SafeNativeMethods.MessageBox(new HandleRef(owner, handle), text, caption, style)); } finally { Application.EndModalMessageLoop(); UnsafeNativeMethods.ThemingScope.Deactivate(userCookie); } // Right after the dialog box is closed, Windows sends WM_SETFOCUS back to the previously active control // but since we have disabled this thread main window the message is lost. So we have to send it again after // we enable the main window. // UnsafeNativeMethods.SendMessage(new HandleRef(owner, handle), NativeMethods.WM_SETFOCUS, 0, 0); return result; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved./// Displays a message box with specified text. /// ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NetworkInformationPermission.cs
- NopReturnReader.cs
- errorpatternmatcher.cs
- RPIdentityRequirement.cs
- OdbcConnectionPoolProviderInfo.cs
- CalendarKeyboardHelper.cs
- COM2Enum.cs
- MappingMetadataHelper.cs
- InitializingNewItemEventArgs.cs
- TextModifierScope.cs
- SafeHandle.cs
- CompilerState.cs
- WorkflowServiceBehavior.cs
- XmlSchemaImporter.cs
- DataErrorValidationRule.cs
- AuthorizationSection.cs
- SmiContext.cs
- DataBoundControl.cs
- ObjectQueryExecutionPlan.cs
- DynamicQueryableWrapper.cs
- PenThreadPool.cs
- BatchParser.cs
- Vector3DCollectionValueSerializer.cs
- DiscardableAttribute.cs
- ArithmeticException.cs
- InertiaRotationBehavior.cs
- SmiGettersStream.cs
- RegexWriter.cs
- ZoneLinkButton.cs
- ForceCopyBuildProvider.cs
- InfoCardBinaryReader.cs
- PageDeviceFont.cs
- XmlResolver.cs
- BulletedListEventArgs.cs
- invalidudtexception.cs
- Activator.cs
- StartUpEventArgs.cs
- EraserBehavior.cs
- MatrixValueSerializer.cs
- HtmlTextArea.cs
- RoutedUICommand.cs
- XamlLoadErrorInfo.cs
- InternalConfigConfigurationFactory.cs
- Queue.cs
- UICuesEvent.cs
- X509Certificate.cs
- Stream.cs
- _ConnectOverlappedAsyncResult.cs
- SafeFileMapViewHandle.cs
- IssuanceLicense.cs
- EntityWithChangeTrackerStrategy.cs
- GenericWebPart.cs
- DetailsViewRowCollection.cs
- WebMessageFormatHelper.cs
- StrokeNodeOperations2.cs
- TableDetailsCollection.cs
- ThaiBuddhistCalendar.cs
- ObjectDataSourceFilteringEventArgs.cs
- ReflectTypeDescriptionProvider.cs
- IWorkflowDebuggerService.cs
- SqlTrackingQuery.cs
- _HeaderInfoTable.cs
- Aggregates.cs
- DataControlFieldCell.cs
- SizeAnimationBase.cs
- ManipulationPivot.cs
- updateconfighost.cs
- SecondaryViewProvider.cs
- DependsOnAttribute.cs
- CodeTypeOfExpression.cs
- CodeRemoveEventStatement.cs
- SqlFunctions.cs
- RolePrincipal.cs
- AnnotationComponentChooser.cs
- BatchParser.cs
- TrustManager.cs
- Converter.cs
- SerializationSectionGroup.cs
- HttpListener.cs
- SHA1Cng.cs
- SystemGatewayIPAddressInformation.cs
- DrawingContextWalker.cs
- GetWinFXPath.cs
- InkCanvasSelectionAdorner.cs
- InvokeProviderWrapper.cs
- Main.cs
- PhonemeEventArgs.cs
- XmlSchemaGroup.cs
- XmlEntity.cs
- ClientScriptManagerWrapper.cs
- InternalCache.cs
- ClientTargetSection.cs
- SqlTriggerAttribute.cs
- NoClickablePointException.cs
- SR.Designer.cs
- TileBrush.cs
- BaseComponentEditor.cs
- ExpressionServices.cs
- CodeStatementCollection.cs
- WebPartTransformerCollection.cs