/// /// Copyright (c) 2019 Sensus Slovensko a.s. /// using System; using System.Drawing; using System.Windows.Forms; using log4net; using TBF.Resources; namespace TBF.BenchControl.Operations { public partial class LargeMessageBoxForm : Form { static readonly ILog log = LogManager.GetLogger(typeof(LargeMessageBoxForm)); /// One of the following two variables is 'true' when the form closes public bool CompletedContinue; public bool CompletedAbort; public LargeMessageBoxForm(string message, Color backgroundColor) { InitializeComponent(); //ControlBox = false; Localize(); messageLabel.Text = message; BackColor = backgroundColor; float textWidth = Graphics.FromImage(new Bitmap(1, 1)).MeasureString(messageLabel.Text, messageLabel.Font).Width; int rqrdFormWidth = (int)textWidth + 80; /// Form width calculated from the text width if (rqrdFormWidth > Width) { int shift = (rqrdFormWidth - Width) / 2; Width = rqrdFormWidth; continueButton.Left += shift; } CompletedContinue = false; CompletedAbort = false; StartForceCloseHandler(); } void Localize() { continueButton.Text = Strings.Continue; abortButton.Text = Strings.Abort_cycle; } private void continueButton_Click(object sender, EventArgs e) { CompletedContinue = true; Close(); } private void abortButton_Click(object sender, EventArgs e) { CompletedAbort = true; Close(); } private void MessageBoxForm_FormClosing(object sender, FormClosingEventArgs e) { if (!CompletedContinue && !CompletedAbort) { CompletedContinue = true; /// Default action is 'Continue' } } #region Forced close handling /// /// Used by CoverTest, AskYesNoOp and LargeMessageBoxOp. /// public void OnCloseThisForm(object sender, EventArgs args) { if (CloseThisFormHandler == null) return; try { CloseThisFormHandler(sender, null); } catch (Exception e) { log.Error("CloseThisFormHandler(...) failed", e); } } public event EventHandler CloseThisFormHandler; public void StartForceCloseHandler() { CloseThisFormHandler += delegate(object sender, EventArgs args) { if (InvokeRequired) Invoke(new EventHandler(OnForceClose), sender, args); else OnForceClose(sender, args); }; } private void OnForceClose(object sender, EventArgs args) { DialogResult = DialogResult.Cancel; Close(); } #endregion } }