我主要是想重载messagebox
换其背景,还自定义一些按钮

解决方案 »

  1.   

    to brightheroes(闭关|那一剑的风情) 
    能不能具体点,最好有实例,先谢了
      

  2.   

    这是MessageBox类的源码,它没有什么可以扩展的功能。
    using System;
    using System.ComponentModel;
    using System.Runtime.InteropServices;
    using System.Security;namespace System.Windows.Forms
    {
      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 static DialogResult Win32ToDialogResult(int value)
        {
          switch (value)
          {
          case 1:
            return DialogResult.OK;      case 2:
            return DialogResult.Cancel;      case 3:
            return DialogResult.Abort;      case 4:
            return DialogResult.Retry;      case 5:
            return DialogResult.Ignore;      case 6:
            return DialogResult.Yes;      case 7:
            return DialogResult.No;      default:
            return DialogResult.No;
          }
        }    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);
        }    public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton)
        {
          return ShowCore(null, text, caption, buttons, icon, defaultButton, 0);
        }    public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
        {
          return ShowCore(null, text, caption, buttons, icon, MessageBoxDefaultButton.Button1, 0);
        }    public static DialogResult Show(string text, string caption, MessageBoxButtons buttons)
        {
          return ShowCore(null, text, caption, buttons, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, 0);
        }    public static DialogResult Show(string text, string caption)
        {
          return ShowCore(null, text, caption, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, 0);
        }    public static DialogResult Show(string text)
        {
          return ShowCore(null, text, "", MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, 0);
        }    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);
        }    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);
        }    public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
        {
          return ShowCore(owner, text, caption, buttons, icon, MessageBoxDefaultButton.Button1, 0);
        }    public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons)
        {
          return ShowCore(owner, text, caption, buttons, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, 0);
        }    public static DialogResult Show(IWin32Window owner, string text, string caption)
        {
          return ShowCore(owner, text, caption, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, 0);
        }    public static DialogResult Show(IWin32Window owner, string text)
        {
          return ShowCore(owner, text, "", MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, 0);
        }    private static DialogResult ShowCore(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options)
        {
          if (!Enum.IsDefined(typeof(MessageBoxButtons), buttons))
          {
            throw new InvalidEnumArgumentException("buttons", buttons, typeof(DialogResult));
          }
          if (!Enum.IsDefined(typeof(MessageBoxIcon), icon))
          {
            throw new InvalidEnumArgumentException("icon", icon, typeof(DialogResult));
          }
          if (!Enum.IsDefined(typeof(MessageBoxDefaultButton), defaultButton))
          {
            throw new InvalidEnumArgumentException("defaultButton", defaultButton, typeof(DialogResult));
          }
          if (!SystemInformation.UserInteractive && (options & 2228224) == 0)
          {
            throw new InvalidOperationException(SR.GetString("CantShowModalOnNonInteractive"));
          }
          if (owner != null && (options & 2228224) != 0)
          {
            throw new ArgumentException(SR.GetString("CantShowMBServiceWithOwner"), "style");
          }
          IntSecurity.SafeSubWindows.Demand();
          int i = buttons | icon | defaultButton | options;
          IntPtr j = IntPtr.Zero;
          if ((options & 2228224) == 0)
          {
            if (owner == null)
            {
              j = UnsafeNativeMethods.GetActiveWindow();
            }
            else
            {
              j = owner.Handle;
            }
          }
          Application.BeginModalMessageLoop();
          DialogResult dialogResult = Win32ToDialogResult(SafeNativeMethods.MessageBox(new HandleRef(owner, j), text, caption, i));
          Application.EndModalMessageLoop();
          return dialogResult;
        }
      }}
      

  3.   

    to chinasdp()
    就是说,自己写个对吧,能不能先再给个思路
      

  4.   

    就是普通窗体怎么画你就怎么画,画的稍微扁平点....
    然后构造函数重载个N个,参数给个N个(你要枚聚也可以...),
    然后点击不同的按钮里面
    设置this.DialogResult 的值
    Close掉就可以了
      

  5.   

    当调用了MessageBox的Show方法,Windows肯定是创建了一个窗口,至于如何得到这个窗口的句柄以及改变它的外观,我的水平有限,也不知道了!不过自己做个窗体可不是难事!
      

  6.   

    MessageBox其实就是一个窗体,你可以自己写一个类似的窗体.
      

  7.   

    自己画一个窗体~把他画成你想要的MessageBox的样式~当你需要MessageBox的时候Show你自定义的窗体不就好了~~这样说你应该能明白了吧?