Example #1
0
 private static void IsUseCustomInfoDefine(ref MessageBoxModule mbox)
 {
     // 判断每一个属性,有效时才赋值 否则忽略.
     if (B_USED_CUSTOM_BRUSHES && null != mbox)
     {
         if (MB_CUSTOMINFO.IsBackgroundChanged)
         {
             mbox.Background = MB_CUSTOMINFO.MB_Background;
         }
         if (MB_CUSTOMINFO.IsBorderBrushChanged)
         {
             mbox.BorderBrush = MB_CUSTOMINFO.MB_Borderbrush;
         }
         if (MB_CUSTOMINFO.IsBorderThicknessChanged)
         {
             mbox.BorderThickness = MB_CUSTOMINFO.MB_BorderThickness;
         }
         if (MB_CUSTOMINFO.IsForegroundChanged)
         {
             mbox.Foreground = MB_CUSTOMINFO.MB_Foreground;
         }
         if (MB_CUSTOMINFO.IsTitleForegroundChanged)
         {
             mbox.TitleForeground = MB_CUSTOMINFO.MB_Title_Foreground;
         }
     }
 }
Example #2
0
        //特色
        public static MessageBoxResult Show(Window owner, string messageBoxText, string caption, IList <MessageBoxButtonInfo> ctrlButtons)
        {
            var mbox = new MessageBoxModule();

            mbox.Message = messageBoxText;
            mbox.Title   = caption;
            mbox.Owner   = owner;

            IsUseCustomInfoDefine(ref mbox); // 同上,检测是否使用自定义主题颜色的配置.

            if (owner != null)
            {
                mbox.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            }

            if (null != ctrlButtons && ctrlButtons.Count > 0)
            {
                foreach (var btnInfo in ctrlButtons)
                {
                    switch (btnInfo.Result)
                    {
                    case MessageBoxResult.Cancel:
                    case MessageBoxResult.No:
                    {
                        var btn = CreateCtrlButton_ResultFalse(mbox, btnInfo.ContentText);
                        btn.Command = new MyCommand(btnInfo.Action);          // 为按钮关联响应动作. 这里我把Action封装为了命令.MessageBoxCommand为自定义的命令.
                        mbox.CtrlButtonCollection.Add(btn);
                    }
                    break;

                    case MessageBoxResult.None:
                    {
                        var btn = CreateCtrlButton_ResultNull(mbox, btnInfo.ContentText);
                        btn.Command = new MyCommand(btnInfo.Action);
                        mbox.CtrlButtonCollection.Add(btn);
                    }
                    break;

                    case MessageBoxResult.OK:
                    case MessageBoxResult.Yes:
                    default:
                    {
                        var btn = CreateCtrlButton_ResultTrue(mbox, btnInfo.ContentText);
                        btn.Command = new MyCommand(btnInfo.Action);
                        mbox.CtrlButtonCollection.Add(btn);
                    }
                    break;
                    }
                }

                var result = mbox.ShowDialog(); //同上一个Show方法.这里调用会显示一个模态窗口.
                return(MessageBoxResult.None);  //为啥我说MessageBoxButtonInfo类中的Result没用了,因为这里我始终返回None了.返回结果的目的是为了根据不同的结果做不同的处理,而这里的Action已经对其作出了响应.所以返回结果的用处不大.
            }
            else
            {
                return(Show(owner, messageBoxText, caption, MessageBoxButton.OK));
            }
        }
Example #3
0
 private static Button CreateCtrlButton_ResultNull(MessageBoxModule mbox, string content)
 {
     return(CreateCtrlButton(content, new RoutedEventHandler((o, e) =>
     {
         try
         {
             mbox.DialogResult = null;
             mbox.Close();
         }
         catch { }
     })));
 }
Example #4
0
        private static Button CreateCtrlButton_ResultTrue(MessageBoxModule mbox, string content)
        {
            return(CreateCtrlButton(content, new RoutedEventHandler((o, e) =>
            {
                try
                {   // 这里的DialogResult = true 赋值,表示着 Show方法的返回值可能为 Yes OK的值.
                    // 所以这个方法支持了MessageBoxButton.OKCancel,MessageBoxButton.YesNo,MessageBoxButton.OK ,MessageBoxButton.YesNoCancel
                    // 枚举中的Yes Ok部分的支持. 同理另外2个方法类似.

                    mbox.DialogResult = true;
                    mbox.Close();
                }
                catch { }
            })));
        }
Example #5
0
        public MessageBoxModule()
        {
            try
            {
                this.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
                this.AllowsTransparency    = true;
                this.WindowStyle           = System.Windows.WindowStyle.None;
                this.ShowInTaskbar         = false;
                this.Topmost              = true;
                this.MouseLeftButtonDown += (o, e) => { this.DragMove(); };

                // 为MessageBoxModule 挂载资源文件,为了使用资源中的一些 样式定义. 注意 Uri中路径的写法.
                Resources.Source = new Uri(@"MyMessageBox;component/Styles/Generic.xaml", UriKind.Relative);
                if (Resources.Contains("MessageBoxButtonStyle"))
                {
                    MessageBoxModule.SetDefaultCtorButtonStyle(Resources["MessageBoxButtonStyle"] as Style);
                }
            }
            catch (Exception e)
            {
                System.Windows.MessageBox.Show(e.Message);
            }
        }
Example #6
0
        public static MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button)
        {
            var mbox = new MessageBoxModule();

            mbox.Message = messageBoxText;
            mbox.Title   = caption;
            mbox.Owner   = owner;
            // 这个方法是检测本次弹出的消息框是否使用了自定义的颜色配置,而不是使用默认提供的颜色配置.后面再说,这里无视.
            IsUseCustomInfoDefine(ref mbox);

            if (owner != null)
            {
                mbox.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            }

            //这里的分支语句提供了传入MessageBoxButton枚举的具体响应实现. 其中CreateCtrlButton_ResultTrue,CreateCtrlButton_ResultFalse
            // 等方法是创建一个按钮 并默认了按钮的响应 和Show方法完成后返回的结果. // 后面在看.

            switch (button)
            {
            case MessageBoxButton.OKCancel:

                mbox.CtrlButtonCollection.Add(CreateCtrlButton_ResultTrue(mbox, "确定"));

                mbox.CtrlButtonCollection.Add(CreateCtrlButton_ResultFalse(mbox, "取消"));
                break;

            //break;
            case MessageBoxButton.YesNo:
                mbox.CtrlButtonCollection.Add(CreateCtrlButton_ResultTrue(mbox, "是"));

                mbox.CtrlButtonCollection.Add(CreateCtrlButton_ResultFalse(mbox, "否"));

                break;

            case MessageBoxButton.YesNoCancel:
                mbox.CtrlButtonCollection.Add(CreateCtrlButton_ResultTrue(mbox, "是"));

                mbox.CtrlButtonCollection.Add(CreateCtrlButton_ResultFalse(mbox, "否"));

                mbox.CtrlButtonCollection.Add(CreateCtrlButton_ResultFalse(mbox, "取消"));
                break;

            case MessageBoxButton.OK:
            default:
                mbox.CtrlButtonCollection.Add(CreateCtrlButton_ResultTrue(mbox, "确定"));
                break;
            }
            var result = mbox.ShowDialog();  // 本行代码是消息框弹出的核心.ShowDialog方法会打开一个模态对话框.等待返回结果.这里的结果不是MessageBoxResult枚举而是可空类型的布尔值(bool?) true对应着MessageBoxResult.Yes ,MessageBoxResult.OK的值.false对应着MessageBoxResult.Cancel,MessageBoxResult.No 的值.

            // 了解这些我们就可以对ShowDialog方法返回值做MessageBoxResult转换了.

            switch (button)
            {
            //break;
            case MessageBoxButton.OKCancel:
            {
                mbox.CtrlButtonCollection.Clear();
                return(result == true ? MessageBoxResult.OK
                            : result == false ? MessageBoxResult.Cancel :
                       MessageBoxResult.None);
            }

            //break;
            case MessageBoxButton.YesNo:
            {
                mbox.CtrlButtonCollection.Clear();
                return(result == true ? MessageBoxResult.Yes : MessageBoxResult.No);
            }

            //break;
            case MessageBoxButton.YesNoCancel:
            {
                mbox.CtrlButtonCollection.Clear();
                return(result == true ? MessageBoxResult.Yes
                            : result == false ? MessageBoxResult.No :
                       MessageBoxResult.Cancel);
            }

            case MessageBoxButton.OK:
            default:
            {
                mbox.CtrlButtonCollection.Clear();
                return(result == true ? MessageBoxResult.OK : MessageBoxResult.None);
            }
            }
        }
Example #7
0
 /// <summary>
 /// 显示一个消息框,该消息框包含消息、标题栏标题和按钮,并且返回结果。
 /// </summary>
 /// <param name="messageBoxText">一个 System.String,用于指定要显示的文本。</param>
 /// <param name="caption"> 一个 System.String,用于指定要显示的标题栏标题。</param>
 /// <param name="button">一个 System.Windows.MessageBoxButton 值,用于指定要显示哪个按钮或哪些按钮。</param>
 /// <returns>一个 System.Windows.MessageBoxResult 值,用于指定用户单击了哪个消息框按钮。</returns>
 public static MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button)
 {
     return(MessageBoxModule.Show(messageBoxText, caption, button));
 }
Example #8
0
 /// <summary>
 /// 在指定窗口的前面显示消息框。该消息框显示消息并返回结果。
 /// </summary>
 /// <param name="owner">一个 System.Windows.Window,表示消息框的所有者窗口。</param>
 /// <param name="messageBoxText">一个 System.String,用于指定要显示的文本。</param>
 /// <returns> 一个 System.Windows.MessageBoxResult 值,用于指定用户单击了哪个消息框按钮。</returns>
 public static MessageBoxResult Show(Window owner, string messageBoxText)
 {
     return(MessageBoxModule.Show(owner, messageBoxText));
 }
Example #9
0
 /// <summary>
 /// 显示一个消息框,该消息框包含消息并返回结果。
 /// </summary>
 /// <param name="messageBoxText">一个 System.String,用于指定要显示的文本。</param>
 /// <returns>一个 System.Windows.MessageBoxResult 值,用于指定用户单击了哪个消息框按钮。</returns>
 public static MessageBoxResult Show(string messageBoxText)
 {
     return(MessageBoxModule.Show(messageBoxText));
 }
Example #10
0
 public static void ResetMessageBoxCustomDefine()
 {
     MessageBoxModule.ResetMessageBoxCustomDefine();
 }
Example #11
0
 /// <summary>
 /// 设置 MIV.Bus.IEMS.MessageBox 的一些自定义信息.
 /// </summary>
 /// <param name="mbCustomIf">MIV.Bus.IEMS.MessageBox 自定义信息结构</param>
 public static void SetMessageBoxCustomDefine(MessageBoxCustomInfo mbCustomIf)
 {
     MessageBoxModule.SetMessageBoxCustomDefine(mbCustomIf);
 }
Example #12
0
 /// <summary>
 /// 设置 MIV.Bus.IEMS.MessageBox 的按钮样式.
 /// </summary>
 /// <param name="buttonStyle"></param>
 public static void SetDefaultCtorButtonStyle(Style buttonStyle)
 {
     MessageBoxModule.SetDefaultCtorButtonStyle(buttonStyle);
 }
Example #13
0
 /// <summary>
 /// 在指定窗口的前面显示消息框。该消息框显示消息、标题栏标题和按钮,并且支持自定义按钮和动作。
 /// </summary>
 /// <param name="owner"> 一个 System.Windows.Window,表示消息框的所有者窗口。</param>
 /// <param name="messageBoxText">一个 System.String,用于指定要显示的文本。</param>
 /// <param name="caption"> 一个 System.String,用于指定要显示的标题栏标题。</param>
 /// <param name="ctrlButtons">一组自定义的按钮和响应动作。</param>
 /// <returns>始终为 MessageBoxResult.None ,返回结果在此无意义。</returns>
 public static MessageBoxResult Show(Window owner, string messageBoxText, string caption, IList <MessageBoxButtonInfo> ctrlButtons)
 {
     return(MessageBoxModule.Show(owner, messageBoxText, caption, ctrlButtons));
 }