/// /// Copyright (c) 2017 Sensus Slovensko a.s. /// using System; using System.Windows.Forms; using log4net; using TBF.Resources; namespace TBF.BenchControl.DataEntry.Standard12 { public partial class CycleEndForm : Form, GenericDevices.IHasCompleted { private static readonly ILog log = LogManager.GetLogger(typeof(CycleEndForm)); /// Number of text boxes for serial numbers public readonly int WaterMetersCount; // To be retrieved after the form closes public string[] EndStateText; // Set to 'true' when the form closes public bool Completed { get { return completed; } } bool completed; int textBoxesCount; Label[] labels; TextBox[] textBoxes; /// /// Constructor /// /// Number of text boxes for serial numbers public CycleEndForm() { InitializeComponent(); ControlBox = false; labels = new Label[] { label1, label2, label3, label4, label5, label6, label7, label8, label9, label10, label11, label12, }; textBoxes = new TextBox[] { textBox1, textBox2, textBox3, textBox4, textBox5, textBox6, textBox7, textBox8, textBox9, textBox10, textBox11, textBox12, }; textBoxesCount = textBoxes.Length; this.WaterMetersCount = textBoxesCount; completed = false; StartForceCloseHandler(); } /// Parameterless constructor for 3 watermeters public CycleEndForm(int waterMetersCount) : this() { this.WaterMetersCount = waterMetersCount; EndStateText = new string[WaterMetersCount]; } private void CycleEndForm_Load(object sender, EventArgs e) { Localize(); Height = 60 + 36 * WaterMetersCount; for (int i = 0; i < textBoxesCount; i++) { if (i >= WaterMetersCount) { labels[i].Visible = false; textBoxes[i].Visible = false; } } } void Localize() { Text = Strings.Data; okButton.Text = Strings.OkBtnText; for (int i = 0; i < WaterMetersCount; i++) { labels[i].Text = string.Format("{0} {1}:", Strings.Water_Meter, (i + 1).ToString()); } } private void okButton_Click(object sender, EventArgs e) { for (int i = 0; i < WaterMetersCount; i++) { EndStateText[i] = textBoxes[i].Text; } completed = true; Close(); } #region Forced close handling public void StartForceCloseHandler() { UiBridge.Bridge.CloseModelessFormHandler += delegate(object sender, EventArgs args) { if (InvokeRequired) { Invoke(new EventHandler(OnForceClose), sender, args); } else OnForceClose(sender, args); }; } void OnForceClose(object sender, EventArgs args) { DialogResult = DialogResult.Cancel; Close(); } #endregion } }