Exemple #1
0
 /// <summary>
 /// Set the dialogs start position when given. Otherwise center the dialog on the current screen.
 /// </summary>
 /// <param name="flexibleMessageBoxForm">
 /// The FlexibleMessageBox dialog.
 /// </param>
 /// <param name="owner">
 /// The owner.
 /// </param>
 private static void SetDialogStartPosition(ExMessageBox flexibleMessageBoxForm, IWin32Window owner)
 {
     // If no owner given: Center on current screen
     if (owner == null)
     {
         var screen = Screen.FromPoint(Cursor.Position);
         flexibleMessageBoxForm.StartPosition = FormStartPosition.Manual;
         flexibleMessageBoxForm.Left = screen.Bounds.Left + screen.Bounds.Width / 2 - flexibleMessageBoxForm.Width / 2;
         flexibleMessageBoxForm.Top = screen.Bounds.Top + screen.Bounds.Height / 2 - flexibleMessageBoxForm.Height / 2;
     }
 }
Exemple #2
0
        /// <summary>
        /// Calculate the dialogs start size (Try to auto-size width to show longest text row). Also set the maximum dialog size.
        /// </summary>
        /// <param name="flexibleMessageBoxForm">
        /// The FlexibleMessageBox dialog.
        /// </param>
        /// <param name="text">
        /// The text (the longest text row is used to calculate the dialog width).
        /// </param>
        private static void SetDialogSizes(ExMessageBox flexibleMessageBoxForm, string text)
        {
            // Set maximum dialog size
            var maxFormSize = new Size(
                Convert.ToInt32(SystemInformation.WorkingArea.Width * GetCorrectedWorkingAreaFactor(MaxWidthRatio)),
                Convert.ToInt32(SystemInformation.WorkingArea.Height * GetCorrectedWorkingAreaFactor(MaxHeightRatio)));
            var borderSize = SystemInformation.BorderSize;
            var borderWidth = 2 * borderSize.Width;
            var borderHeight = 2 * borderSize.Height;
            var contentPadding = flexibleMessageBoxForm.contentPanel.Padding;
            var contentPaddingX = contentPadding.Left + contentPadding.Right;
            var contentPaddingY = contentPadding.Top + contentPadding.Bottom;
            var maxTxtSize = new Size(maxFormSize.Width - borderWidth - contentPaddingX, maxFormSize.Height - borderHeight - contentPaddingY);

            // Calculate dialog start size: Try to auto-size width to show longest text row
            var stringSize = TextRenderer.MeasureText(
                text,
                flexibleMessageBoxForm.richTextBoxMessage.Font,
                maxTxtSize,
                TextFormatFlags.WordBreak | TextFormatFlags.TextBoxControl);

            // Set dialog start size
            var mainContentHeight = stringSize.Height + contentPaddingY;
            var mainContentWidth = stringSize.Width + contentPaddingX;
            var formWidth = mainContentWidth + borderWidth;
            var formHeight = mainContentHeight + flexibleMessageBoxForm.buttonPanel.Height + borderHeight;

            var icon = flexibleMessageBoxForm.pictureBoxForIcon;
            if (icon.Image == null)
            {
                icon.Padding = Padding.Empty;
            }
            else
            {
                icon.Padding = new Padding(0, 0, 10, 0);
                formWidth += icon.Width;
            }

            flexibleMessageBoxForm.ClientSize = new Size(formWidth, formHeight);
            if (flexibleMessageBoxForm.Width > maxFormSize.Width)
            {
                flexibleMessageBoxForm.Width = maxFormSize.Width;
            }

            if (flexibleMessageBoxForm.Height > maxFormSize.Height)
            {
                flexibleMessageBoxForm.Height = maxFormSize.Height;
            }

            flexibleMessageBoxForm.MaximumSize = flexibleMessageBoxForm.Size;
        }
Exemple #3
0
        /// <summary>
        /// Set dialog buttons visibilities and texts. Also set a default button.
        /// </summary>
        /// <param name="flexibleMessageBoxForm">
        /// The FlexibleMessageBox dialog.
        /// </param>
        /// <param name="buttons">
        /// The buttons.
        /// </param>
        /// <param name="defaultButton">
        /// The default button.
        /// </param>
        private static void SetDialogButtons(ExMessageBox flexibleMessageBoxForm, MessageBoxButtons buttons, MessageBoxDefaultButton defaultButton)
        {
            // Set the buttons visibilities and texts
            switch (buttons)
            {
                case MessageBoxButtons.AbortRetryIgnore:
                    flexibleMessageBoxForm._visibleButtonsCount = 3;

                    flexibleMessageBoxForm.button1.Visible = true;
                    flexibleMessageBoxForm.button1.Text = flexibleMessageBoxForm.GetButtonText(ButtonType.Abort);
                    flexibleMessageBoxForm.button1.DialogResult = DialogResult.Abort;

                    flexibleMessageBoxForm.button2.Visible = true;
                    flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonType.Retry);
                    flexibleMessageBoxForm.button2.DialogResult = DialogResult.Retry;

                    flexibleMessageBoxForm.button3.Visible = true;
                    flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonType.Ignore);
                    flexibleMessageBoxForm.button3.DialogResult = DialogResult.Ignore;
                    break;

                case MessageBoxButtons.OKCancel:
                    flexibleMessageBoxForm._visibleButtonsCount = 2;

                    flexibleMessageBoxForm.button2.Visible = true;
                    flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonType.OK);
                    flexibleMessageBoxForm.button2.DialogResult = DialogResult.OK;

                    flexibleMessageBoxForm.button3.Visible = true;
                    flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonType.Cancel);
                    flexibleMessageBoxForm.button3.DialogResult = DialogResult.Cancel;
                    break;

                case MessageBoxButtons.RetryCancel:
                    flexibleMessageBoxForm._visibleButtonsCount = 2;

                    flexibleMessageBoxForm.button2.Visible = true;
                    flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonType.Retry);
                    flexibleMessageBoxForm.button2.DialogResult = DialogResult.Retry;

                    flexibleMessageBoxForm.button3.Visible = true;
                    flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonType.Cancel);
                    flexibleMessageBoxForm.button3.DialogResult = DialogResult.Cancel;
                    break;

                case MessageBoxButtons.YesNo:
                    flexibleMessageBoxForm._visibleButtonsCount = 2;

                    flexibleMessageBoxForm.button2.Visible = true;
                    flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonType.Yes);
                    flexibleMessageBoxForm.button2.DialogResult = DialogResult.Yes;

                    flexibleMessageBoxForm.button3.Visible = true;
                    flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonType.No);
                    flexibleMessageBoxForm.button3.DialogResult = DialogResult.No;
                    break;

                case MessageBoxButtons.YesNoCancel:
                    flexibleMessageBoxForm._visibleButtonsCount = 3;

                    flexibleMessageBoxForm.button1.Visible = true;
                    flexibleMessageBoxForm.button1.Text = flexibleMessageBoxForm.GetButtonText(ButtonType.Yes);
                    flexibleMessageBoxForm.button1.DialogResult = DialogResult.Yes;

                    flexibleMessageBoxForm.button2.Visible = true;
                    flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonType.No);
                    flexibleMessageBoxForm.button2.DialogResult = DialogResult.No;

                    flexibleMessageBoxForm.button3.Visible = true;
                    flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonType.Cancel);
                    flexibleMessageBoxForm.button3.DialogResult = DialogResult.Cancel;
                    break;

                case MessageBoxButtons.OK:
                default:
                    flexibleMessageBoxForm._visibleButtonsCount = 1;
                    flexibleMessageBoxForm.button3.Visible = true;
                    flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonType.OK);
                    flexibleMessageBoxForm.button3.DialogResult = DialogResult.OK;
                    break;
            }

            // Set default button (used in FlexibleMessageBoxForm_Shown)
            flexibleMessageBoxForm._defaultButton = defaultButton;
        }
Exemple #4
0
        /// <summary>
        /// Set the dialogs icon. When no icon is used: Correct placement and width of rich text box.
        /// </summary>
        /// <param name="flexibleMessageBoxForm">
        /// The FlexibleMessageBox dialog.
        /// </param>
        /// <param name="icon">
        /// The MessageBoxIcon.
        /// </param>
        private static void SetDialogIcon(ExMessageBox flexibleMessageBoxForm, MessageBoxIcon icon)
        {
            Icon targetIcon = null;
            switch (icon)
            {
                case MessageBoxIcon.Information:
                    targetIcon = SystemIcons.Information;
                    break;
                case MessageBoxIcon.Warning:
                    targetIcon = SystemIcons.Warning;
                    break;
                case MessageBoxIcon.Error:
                    targetIcon = SystemIcons.Error;
                    break;
                case MessageBoxIcon.Question:
                    targetIcon = SystemIcons.Question;
                    break;
                default:

                    // When no icon is used: Correct placement and width of rich text box.
                    flexibleMessageBoxForm.pictureBoxForIcon.Visible = false;
                    flexibleMessageBoxForm.richTextBoxMessage.Left -= flexibleMessageBoxForm.pictureBoxForIcon.Width;
                    flexibleMessageBoxForm.richTextBoxMessage.Width += flexibleMessageBoxForm.pictureBoxForIcon.Width;
                    break;
            }

            flexibleMessageBoxForm.pictureBoxForIcon.Image = targetIcon.ToBitmap();
        }
Exemple #5
0
        /// <summary>
        /// The show.
        /// </summary>
        /// <param name="owner">
        /// The owner.
        /// </param>
        /// <param name="text">
        /// The text.
        /// </param>
        /// <param name="caption">
        /// The caption.
        /// </param>
        /// <param name="buttons">
        /// The buttons.
        /// </param>
        /// <param name="icon">
        /// The icon.
        /// </param>
        /// <param name="defaultButton">
        /// The default button.
        /// </param>
        /// <param name="translation">
        /// The translation.
        /// </param>
        /// <returns>
        /// The <see cref="DialogResult"/>.
        /// </returns>
        public static DialogResult Show(
            IWin32Window owner,
            string text,
            string caption,
            MessageBoxButtons buttons,
            MessageBoxIcon icon,
            MessageBoxDefaultButton defaultButton,
            Dictionary<ButtonType, string> translation)
        {
            // Create a new instance of the FlexibleMessageBox form
            using (var flexibleMessageBoxForm = new ExMessageBox())
            {
                // Set the font for all controls
                flexibleMessageBoxForm.Font = DialogFont;

                // Bind the caption and the message text
                flexibleMessageBoxForm.CaptionText = caption;
                flexibleMessageBoxForm.MessageText = text;
                flexibleMessageBoxForm.FlexibleMessageBoxFormBindingSource.DataSource = flexibleMessageBoxForm;

                if (translation != null && translation.Count > 0)
                {
                    flexibleMessageBoxForm.SetTranslation(translation);
                }

                // Set the buttons visibilities and texts. Also set a default button.
                SetDialogButtons(flexibleMessageBoxForm, buttons, defaultButton);

                // Set the dialogs icon. When no icon is used: Correct placement and width of rich text box.
                SetDialogIcon(flexibleMessageBoxForm, icon);

                flexibleMessageBoxForm.richTextBoxMessage.Font = DialogFont;

                // Calculate the dialogs start size (Try to auto-size width to show longest text row). Also set the maximum dialog size.
                SetDialogSizes(flexibleMessageBoxForm, text);

                // Set the dialogs start position when given. Otherwise center the dialog on the current screen.
                SetDialogStartPosition(flexibleMessageBoxForm, owner);

                // Show the dialog
                return flexibleMessageBoxForm.ShowDialog(owner);
            }
        }