#region Imports using DPumpHydr.WinFrmUI.RLT.Child.Poison; using System; using System.Media; using System.Threading; using System.Windows.Forms; #endregion namespace DPumpHydr.WinFrmUI.RLT.Controls { #region PoisonMessageBox public static class PoisonMessageBox { public static DialogResult Show(IWin32Window owner, string message) { return Show(owner, message, "Notification", 211); } public static DialogResult Show(IWin32Window owner, string message, int height) { return Show(owner, message, "Notification", height); } public static DialogResult Show(IWin32Window owner, string message, string title) { return Show(owner, message, title, MessageBoxButtons.OK, 211); } public static DialogResult Show(IWin32Window owner, string message, string title, int height) { return Show(owner, message, title, MessageBoxButtons.OK, height); } public static DialogResult Show(IWin32Window owner, string message, string title, MessageBoxButtons buttons) { return Show(owner, message, title, buttons, MessageBoxIcon.None, 211); } public static DialogResult Show(IWin32Window owner, string message, string title, MessageBoxButtons buttons, int height) { return Show(owner, message, title, buttons, MessageBoxIcon.None, height); } public static DialogResult Show(IWin32Window owner, string message, string title, MessageBoxButtons buttons, MessageBoxIcon icon) { return Show(owner, message, title, buttons, icon, MessageBoxDefaultButton.Button1, 211); } public static DialogResult Show(IWin32Window owner, string message, string title, MessageBoxButtons buttons, MessageBoxIcon icon, int height) { return Show(owner, message, title, buttons, icon, MessageBoxDefaultButton.Button1, height); } public static DialogResult Show(IWin32Window owner, string message, string title, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultbutton) { return Show(owner, message, title, buttons, icon, defaultbutton, 211); } public static DialogResult Show(IWin32Window owner, string message, string title, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultbutton, int height) { DialogResult _result = DialogResult.None; if (owner != null) { Form _owner = ((owner as Form) == null) ? ((UserControl)owner).ParentForm : (Form)owner; //int _minWidth = 500; //int _minHeight = 350; //if (_owner.Size.Width < _minWidth || // _owner.Size.Height < _minHeight) //{ // if (_owner.Size.Width < _minWidth && _owner.Size.Height < _minHeight) { // _owner.Size = new(_minWidth, _minHeight); // } // else // { // if (_owner.Size.Width < _minWidth) _owner.Size = new(_minWidth, _owner.Size.Height); // else _owner.Size = new(_owner.Size.Width, _minHeight); // } // int x = Convert.ToInt32(Math.Ceiling((decimal)(Screen.PrimaryScreen.WorkingArea.Size.Width / 2) - (_owner.Size.Width / 2))); // int y = Convert.ToInt32(Math.Ceiling((decimal)(Screen.PrimaryScreen.WorkingArea.Size.Height / 2) - (_owner.Size.Height / 2))); // _owner.Location = new(x, y); //} switch (icon) { case MessageBoxIcon.Error: SystemSounds.Hand.Play(); break; case MessageBoxIcon.Exclamation: SystemSounds.Exclamation.Play(); break; case MessageBoxIcon.Question: SystemSounds.Beep.Play(); break; default: SystemSounds.Asterisk.Play(); break; } PoisonMessageBoxControl _control = new() { BackColor = _owner.BackColor }; _control.Properties.Buttons = buttons; _control.Properties.DefaultButton = defaultbutton; _control.Properties.Icon = icon; _control.Properties.Message = message; _control.Properties.Title = title; _control.Padding = new Padding(0, 0, 0, 0); _control.ControlBox = false; _control.ShowInTaskbar = false; _control.TopMost = true; //_owner.Controls.Add(_control); //if (_owner is IPoisonForm) //{ // //if (((PoisonForm)_owner).DisplayHeader) // //{ // // _offset += 30; // //} // _control.Theme = ((PoisonForm)_owner).Theme; // _control.Style = ((PoisonForm)_owner).Style; //} _control.Size = new(_owner.Size.Width, height); _control.Location = new(_owner.Location.X, _owner.Location.Y + ((_owner.Height - _control.Height) / 2)); _control.ArrangeApperance(); int _overlaySizes = Convert.ToInt32(Math.Floor(_control.Size.Height * 0.28)); //_control.OverlayPanelTop.Size = new(_control.Size.Width, _overlaySizes - 30); //_control.OverlayPanelBottom.Size = new(_control.Size.Width, _overlaySizes); _control.ShowDialog(); _control.BringToFront(); _control.SetDefaultButton(); Action _delegate = new(ModalState); IAsyncResult _asyncresult = null; try { _asyncresult = _delegate.BeginInvoke(_control, null, _delegate); } catch { } bool _cancelled = false; try { while (!_asyncresult.IsCompleted) { Thread.Sleep(1); Application.DoEvents(); } } catch { _cancelled = true; try { if (!_asyncresult.IsCompleted) { try { _asyncresult = null; } catch { } } } catch { _result = _control.Result; } _delegate = null; } if (!_cancelled) { _result = _control.Result; //_owner.Controls.Remove(_control); _control.Dispose(); _control = null; } } return _result; } private static void ModalState(PoisonMessageBoxControl control) { /* while (control.Visible) { } */ } } #endregion }