我很难找出这两个消息框之间的主要区别。System.Windows.MessageBox
和System.Windows.Forms.MessageBox
之间的区别是什么
发布于 2011-01-12 01:36:19
System.Windows.MessageBox
是使用WPF添加的,并且存在于WPF程序集(PresentationFramework.dll)中。
System.Windows.Forms.MessageBox
是随Windows Forms一起添加的,并且存在于Windows Forms程序集中。
如果您的程序是Windows Forms程序,我会使用后者(System.Windows.Forms.MessageBox
),因为它不会引入对WPF的依赖。另一方面,如果你在为WPF进行开发,我会使用System.Windows.MessageBox
。
发布于 2011-01-23 09:43:28
还有一点需要注意:
如果要在既不是windows窗体应用程序也不是窗体应用程序(如.NET控制台应用程序)的应用程序中显示消息框,则不应为这两个应用程序拖入程序集引用,因为这似乎是internet上的常言。
相反,您应该使用pinvoke并调用User32,如下所示:
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern MessageBoxResult MessageBox(IntPtr hWnd, String text, String caption, int options);
/// <summary>
/// Flags that define appearance and behaviour of a standard message box displayed by a call to the MessageBox function.
/// </summary>
[Flags]
public enum MessageBoxOptions : uint
{
Ok = 0x000000,
OkCancel = 0x000001,
AbortRetryIgnore = 0x000002,
YesNoCancel = 0x000003,
YesNo = 0x000004,
RetryCancel = 0x000005,
CancelTryContinue = 0x000006,
IconHand = 0x000010,
IconQuestion = 0x000020,
IconExclamation = 0x000030,
IconAsterisk = 0x000040,
UserIcon = 0x000080,
IconWarning = IconExclamation,
IconError = IconHand,
IconInformation = IconAsterisk,
IconStop = IconHand,
DefButton1 = 0x000000,
DefButton2 = 0x000100,
DefButton3 = 0x000200,
DefButton4 = 0x000300,
ApplicationModal = 0x000000,
SystemModal = 0x001000,
TaskModal = 0x002000,
Help = 0x004000, //Help Button
NoFocus = 0x008000,
SetForeground = 0x010000,
DefaultDesktopOnly = 0x020000,
Topmost = 0x040000,
Right = 0x080000,
RTLReading = 0x100000,
}
/// <summary>
/// Represents possible values returned by the MessageBox function.
/// </summary>
public enum MessageBoxResult : uint
{
Ok = 1,
Cancel,
Abort,
Retry,
Ignore,
Yes,
No,
Close,
Help,
TryAgain,
Continue,
Timeout = 32000
}
var result = User32.MessageBox(IntPtr.Zero, "Debugging Break", "Your Console Application", (int)User32.MessageBoxOptions.Ok);
发布于 2011-01-12 01:38:21
据我所知,两者最终都会调用相同的低级windows API ...
https://stackoverflow.com/questions/4660587
复制相似问题