zoukankan      html  css  js  c++  java
  • 自定义对话框[原创]

    创建一个窗体,属性Name为:MessageDialog ,属性ControlBox为:false,属性最大框,最小框为false;ShowIcon,ShowInTaskbar为false;
    其他可以根据自己爱好设置一些,如字体,字号,窗体形状等等。
    就不多说了,代码如下:
      1using System;
      2using System.Collections.Generic;
      3using System.ComponentModel;
      4using System.Data;
      5using System.Drawing;
      6using System.Text;
      7using System.Windows.Forms;
      8
      9namespace BOM.NewUI.Assistant
     10{
     11    public partial class MessageDialog : Form
     12    {
     13        public MessageDialog()
     14        {
     15            InitializeComponent();
     16        }
           
     17
     18        /// <summary>
     19        /// 显示消息对话框,自行全部信息指定全部信息。
     20        /// </summary>
     21        /// <param name="owner">父窗口</param>
     22        /// <param name="icon">显示的图标</param>
     23        /// <param name="text">信息内容</param>
     24        /// <param name="caption">对话框标题</param>
     25        /// <param name="buttonTypes">按钮类别数组</param>
     26        /// <param name="buttonLabels">按钮文字</param>
     27        /// <param name="defaultButton">缺省按钮</param>
     28        /// <returns>用户点击的按钮类型</returns>

     29        public static DialogResult Show(IWin32Window owner, MessageIcon icon, string text, string caption,
     30                                            DialogResult[] buttonTypes, string[] buttonLabels, DialogResult defaultButton)
     31        {
     32            MessageDialog dialog = new MessageDialog();
     33            using (dialog)
     34            {
     35                dialog.SetIcon(icon);
     36                dialog.SetText(text);
     37                dialog.setCaption(GetCaption(icon, caption));
     38                dialog.CreateButtons(buttonTypes, buttonLabels, defaultButton);
     39
     40                return dialog.ShowDialog(owner);
     41            }

     42        }

     43
     44        /// <summary>
     45        /// 显示信息提示对话框。
     46        /// </summary>
     47        /// <param name="owner">父窗口</param>
     48        /// <param name="text">信息内容</param>
     49        /// <param name="caption">对话框标题</param>
     50        /// <returns>用户点击的按钮类型</returns>

     51        public static DialogResult Show(IWin32Window owner, string text, string caption)
     52        {
     53            return Show(owner, MessageIcon.Information, text, caption);
     54        }

     55
     56        /// <summary>
     57        /// 根据图标类型显示对话框,按钮按照图标的类型设定。
     58        /// </summary>
     59        /// <param name="owner">父窗口</param>
     60        /// <param name="icon">图标类型</param>
     61        /// <param name="text">信息内容</param>
     62        /// <param name="caption">对话框标题</param>
     63        /// <returns>用户点击的按钮类型</returns>

     64        public static DialogResult Show(IWin32Window owner, MessageIcon icon, string text, string caption)
     65        {
     66            return Show(owner, icon, text, caption,
     67                         GetButtonTypes(icon), GetButtonLabels(icon),
     68                         GetDefaultButton(icon));
     69        }

     70
     71        /// <summary>
     72        /// 根据图标类型和按钮类型显示对话框。
     73        /// </summary>
     74        /// <param name="owner">父窗口</param>
     75        /// <param name="icon">图标类型</param>
     76        /// <param name="text">信息内容</param>
     77        /// <param name="caption">对话框标题</param>
     78        /// <param name="buttons">按钮类型,使用Windows预定义类型。</param>
     79        /// <returns></returns>

     80        public static DialogResult Show(IWin32Window owner, MessageIcon icon, string text, string caption,
     81                                        MessageBoxButtons buttons)
     82        {
     83            return Show(owner, icon, text, caption, buttons, GetDefaultButton(buttons));
     84        }

     85
     86        /// <summary>
     87        /// 根据图标类型和按钮类型显示对话框,自行指定缺省按钮。
     88        /// </summary>
     89        /// <param name="owner">父窗口</param>
     90        /// <param name="icon">图标类型</param>
     91        /// <param name="text">信息内容</param>
     92        /// <param name="caption">对话框标题</param>
     93        /// <param name="buttons">按钮类型,使用Windows预定义类型。</param>
     94        /// <param name="defaultButton">缺省按钮类型,点击Enter时触发</param>
     95        /// <returns>用户点击的按钮类型</returns>

     96        public static DialogResult Show(IWin32Window owner, MessageIcon icon, string text, string caption,
     97                                        MessageBoxButtons buttons, DialogResult defaultButton)
     98        {
     99            return Show(owner, icon, text, caption, buttons, GetButtonLabels(buttons), defaultButton);
    100        }

    101
    102        /// <summary>
    103        /// 根据图标类型和按钮类型显示对话框,自行指定按钮文字和缺省按钮。
    104        /// </summary>
    105        /// <param name="owner">父窗口</param>
    106        /// <param name="icon">图标类型</param>
    107        /// <param name="text">信息内容</param>
    108        /// <param name="caption">对话框标题</param>
    109        /// <param name="buttons">按钮类型,使用Windows预定义类型。</param>
    110        /// <param name="defaultButton">缺省按钮类型,点击Enter时触发</param>
    111        /// <param name="buttonLabels">按钮文字数组</param>
    112        /// <returns>用户点击的按钮类型</returns>

    113        public static DialogResult Show(IWin32Window owner, MessageIcon icon, string text, string caption,
    114                                        MessageBoxButtons buttons, string[] buttonLabels, DialogResult defaultButton)
    115        {
    116            return Show(owner, icon, text, caption, GetButtonTypes(buttons), buttonLabels, defaultButton);
    117        }

    118
    119
    120        private static DialogResult GetDefaultButton(MessageIcon icon)
    121        {
    122            switch (icon)
    123            {
    124                case MessageIcon.Question:
    125                    return DialogResult.No;
    126                case MessageIcon.Password:
    127                    return DialogResult.OK;
    128                case MessageIcon.Information:
    129                case MessageIcon.Warning:
    130                case MessageIcon.Error:
    131                case MessageIcon.Help:
    132                case MessageIcon.Locked:
    133                case MessageIcon.Shutdown:
    134                default:
    135                    return DialogResult.OK;
    136            }

    137        }

    138
    139        private static DialogResult GetDefaultButton(MessageBoxButtons buttons)
    140        {
    141            switch (buttons)
    142            {
    143                case MessageBoxButtons.YesNo:
    144                    return DialogResult.No;
    145                case MessageBoxButtons.OKCancel:
    146                    return DialogResult.Cancel;
    147                case MessageBoxButtons.OK:
    148                    return DialogResult.OK;
    149                case MessageBoxButtons.AbortRetryIgnore:
    150                    return DialogResult.Abort;
    151                case MessageBoxButtons.RetryCancel:
    152                    return DialogResult.Retry;
    153                case MessageBoxButtons.YesNoCancel:
    154                    return DialogResult.Cancel;
    155                default:
    156                    return DialogResult.OK;
    157            }

    158
    159        }

    160        /// <summary>
    161        /// button 标签
    162        /// </summary>
    163        /// <param name="type"></param>
    164        /// <returns></returns>

    165        private static string GetButtonLabel(DialogResult type)
    166        {
    167            switch (type)
    168            {
    169                case DialogResult.Abort:
    170                    return "中止";
    171                case DialogResult.Cancel:
    172                    return "取消";
    173                case DialogResult.Ignore:
    174                    return "忽略";
    175                case DialogResult.No:
    176                    return "";
    177                case DialogResult.OK:
    178                    return "确定";
    179                case DialogResult.Retry:
    180                    return "重试";
    181                case DialogResult.Yes:
    182                    return "";
    183                default:
    184                    return "";
    185            }

    186        }

    187
    188        private static string[] GetButtonLabels(MessageIcon icon)
    189        {
    190            DialogResult[] types = GetButtonTypes(icon);
    191            return GetButtonLabels(types);
    192        }

    193
    194        private static string[] GetButtonLabels(MessageBoxButtons buttons)
    195        {
    196            DialogResult[] types = GetButtonTypes(buttons);
    197            return GetButtonLabels(types);
    198        }

    199
    200        private static string[] GetButtonLabels(DialogResult[] types)
    201        {
    202            string[] labels = new string[types.Length];
    203            for (int i = 0; i < types.Length; i++)
    204            {
    205                labels[i] = GetButtonLabel(types[i]);
    206            }

    207
    208            return labels;
    209        }

    210
    211        private static DialogResult[] BUTTON_TYPES_ABORT_RETRY_CANCEL = new DialogResult[]
    212            {
    213                DialogResult.Abort,
    214                DialogResult.Retry,
    215                DialogResult.Ignore,
    216            }
    ;
    217
    218        private static DialogResult[] BUTTON_TYPES_OK = new DialogResult[]
    219            {
    220                DialogResult.OK,
    221            }
    ;
    222
    223        private static DialogResult[] BUTTON_TYPES_OK_CANCEL = new DialogResult[]
    224            {
    225                DialogResult.OK, DialogResult.Cancel,
    226            }
    ;
    227
    228        private static DialogResult[] BUTTON_TYPES_RETRY_CANCEL = new DialogResult[]
    229            {
    230                DialogResult.Retry, DialogResult.Cancel,
    231            }
    ;
    232
    233        private static DialogResult[] BUTTON_TYPES_YES_NO = new DialogResult[]
    234            {
    235                DialogResult.Yes, DialogResult.No,
    236            }
    ;
    237
    238        private static DialogResult[] BUTTON_TYPES_YES_NO_CANCEL = new DialogResult[]
    239            {
    240                DialogResult.Yes, DialogResult.No, DialogResult.Cancel,
    241            }
    ;
    242
    243        private static DialogResult[] GetButtonTypes(MessageIcon icon)
    244        {
    245            switch (icon)
    246            {
    247                case MessageIcon.Question:
    248                    return BUTTON_TYPES_YES_NO;
    249                case MessageIcon.Password:
    250                    return BUTTON_TYPES_OK_CANCEL;
    251                case MessageIcon.Information:
    252                case MessageIcon.Warning:
    253                case MessageIcon.Error:
    254                case MessageIcon.Help:
    255                case MessageIcon.Locked:
    256                case MessageIcon.Shutdown:
    257                default:
    258                    return BUTTON_TYPES_OK;
    259            }

    260        }

    261
    262
    263        private static DialogResult[] GetButtonTypes(MessageBoxButtons buttons)
    264        {
    265            switch (buttons)
    266            {
    267                case MessageBoxButtons.YesNo:
    268                    return BUTTON_TYPES_YES_NO;
    269                case MessageBoxButtons.OKCancel:
    270                    return BUTTON_TYPES_OK_CANCEL;
    271                case MessageBoxButtons.OK:
    272                    return BUTTON_TYPES_OK;
    273                case MessageBoxButtons.AbortRetryIgnore:
    274                    return BUTTON_TYPES_ABORT_RETRY_CANCEL;
    275                case MessageBoxButtons.RetryCancel:
    276                    return BUTTON_TYPES_RETRY_CANCEL;
    277                case MessageBoxButtons.YesNoCancel:
    278                    return BUTTON_TYPES_YES_NO_CANCEL;
    279                default:
    280                    return BUTTON_TYPES_OK;
    281            }

    282        }

    283
    284
    285        private static string[] CAPTIONS = new string[]
    286            {
    287                "提示",
    288                "请确认操作",
    289                "警告",
    290                "错误",
    291                "操作中止",
    292                "帮助信息",
    293                "已锁定",
    294                "安全信息",
    295                "系统关闭"
    296            }
    ;
    297
    298        private static string GetCaption(MessageIcon icon, string caption)
    299        {
    300            if (!string.IsNullOrEmpty(caption))
    301                return caption;
    302
    303            return CAPTIONS[(int)icon];
    304        }

    305
    306
    307        private void SetIcon(MessageIcon icon)
    308        {
    309            iconBox.Image = iconList.Images[(int)icon];
    310        }

    311
    312        private void SetText(string text)
    313        {
    314            textLabel.Text = text;
    315        }

    316
    317        private void setCaption(string caption)
    318        {
    319            Text = caption;
    320        }

    321
    322        private const int BUTTON_POSITION_Y = 230;
    323        private const int BUTTON_GAP = 40;
    324        private static Size BUTTON_SIZE = new Size(10030);
    325
    326        /// <summary>
    327        /// 创建Button。
    328        /// </summary>
    329        /// <param name="types"></param>
    330        /// <param name="labels"></param>
    331        /// <param name="dft"></param>

    332        private void CreateButtons(DialogResult[] types, string[] labels, DialogResult dft)
    333        {
    334            int count = types.Length;
    335            int x = (Size.Width - (count * BUTTON_SIZE.Width + (count - 1* BUTTON_GAP)) / 2;
    336            for (int i = 0; i < types.Length; i++)
    337            {
    338                DialogResult type = types[i];
    339                Button button = new Button();
    340
    341                button.Location = new Point(x + i * (BUTTON_SIZE.Width + BUTTON_GAP), BUTTON_POSITION_Y);
    342                button.Size = BUTTON_SIZE;
    343                button.DialogResult = type;
    344                button.Text = labels[i];
    345                Controls.Add(button);
    346
    347                if (type == dft)
    348                {
    349                    AcceptButton = button;
    350                }

    351            }

    352        }

    353    }

    354
    355
    356    /// <summary>
    357    /// 用于枚举消息对话框使用的图标。
    358    /// </summary>

    359    public enum MessageIcon : int
    360    {
    361        /// <summary>
    362        /// 提示信息。
    363        /// </summary>

    364        Information = 0,
    365        /// <summary>
    366        /// 需要用户确认。
    367        /// </summary>

    368        Question = 1,
    369        /// <summary>
    370        /// 警告信息。
    371        /// </summary>

    372        Warning = 2,
    373        /// <summary>
    374        /// 错误信息。
    375        /// </summary>

    376        Error = 3,
    377        /// <summary>
    378        /// 操作终止,或被禁止的提示信息。
    379        /// </summary>

    380        Stop = 4,
    381        /// <summary>
    382        /// 帮助信息。
    383        /// </summary>

    384        Help = 5,
    385        /// <summary>
    386        /// 已锁定信息。
    387        /// </summary>

    388        Locked = 6,
    389        /// <summary>
    390        /// 密码,安全相关信息。
    391        /// </summary>

    392        Password = 7,
    393        /// <summary>
    394        /// 关闭提示信息。
    395        /// </summary>

    396        Shutdown = 8
    397    }

    398}

    使用时可如下方式:
     MessageDialog.Show(this, MessageIcon.Question, "中国*****技术服务公司", "提示信息", MessageBoxButtons.YesNo);
                MessageDialog.Show(this, MessageIcon.Locked, "中国*****技术服务公司", "提示信息", MessageBoxButtons.YesNo);
                MessageDialog.Show(this, MessageIcon.Shutdown, "中国*****技术服务公司", "提示信息", MessageBoxButtons.YesNo);
                MessageDialog.Show(this, MessageIcon.Stop, "中国*****技术服务公司", "提示信息", MessageBoxButtons.YesNo);
                MessageDialog.Show(this, MessageIcon.Help, "中国*****技术服务公司", "提示信息", MessageBoxButtons.YesNo);
  • 相关阅读:
    微软外服 AlI In One
    js 循环多次和循环一次的时间的性能对比 All In One
    vue inject All In One
    Excel 表格数据倒置 All In One
    SVG tickets All In One
    OH MY ZSH All In One
    js array for loop performance compare All In One
    mac terminal show You have new mail All In one
    新闻视频 26 制作母版页
    转自牛腩 母版页和相对路径
  • 原文地址:https://www.cnblogs.com/winnxm/p/918408.html
Copyright © 2011-2022 走看看