/// /// Copyright (c) 2015 Sensus Metering Systems /// using System; using System.Collections.Generic; using System.Windows.Forms; using log4net; using TBF.Resources; namespace TBF.BenchControl.DataEntry.Standard24 { public partial class TestStartEndForm : Form, GenericDevices.IHasCompleted { private static readonly ILog log = LogManager.GetLogger(typeof(TestStartEndForm)); // Set to 'true' when the form closes public bool Completed { get { return completed; } } bool completed; /// Number of text boxes for serial numbers public readonly int WaterMetersCount; readonly bool[] disabled; // To be retrieved after the form closes public float[] WMStartState; // To be retrieved after the form closes public readonly string[] WMStartStateStr; // To be retrieved after the form closes public float[] WMEndState; bool endStates; /// false=start states, true=end states float refVolume; float warningLimLo; /// limit to display exclamation mark, typically 2x errLimLo float warningLimHi; /// limit to display exclamation mark, typically 2x errLimHi TextBox[] startTextBoxes; TextBox[] endTextBoxes; IList enabledTextBoxes; /// /// Constructor to fill in start states /// /// Number of text boxes for serial numbers public TestStartEndForm(int waterMetersCount, bool[] disabled) { endStates = false; this.WaterMetersCount = waterMetersCount; this.disabled = disabled; InitializeComponent(); WMStartState = new float[waterMetersCount]; WMStartStateStr = new string[waterMetersCount]; completed = false; startTextBoxes = new TextBox[] { startTextBox1, startTextBox2, startTextBox3, startTextBox4, startTextBox5, startTextBox6, startTextBox7, startTextBox8, startTextBox9, startTextBox10, startTextBox11, startTextBox12, startTextBox13, startTextBox14, startTextBox15, startTextBox16, startTextBox17, startTextBox18, startTextBox19, startTextBox20, startTextBox21, startTextBox22, startTextBox23, startTextBox24, }; endTextBoxes = new TextBox[] { endTextBox1, endTextBox2, endTextBox3, endTextBox4, endTextBox5, endTextBox6, endTextBox7, endTextBox8, endTextBox9, endTextBox10, endTextBox11, endTextBox12, endTextBox13, endTextBox14, endTextBox15, endTextBox16, endTextBox17, endTextBox18, endTextBox19, endTextBox20, endTextBox21, endTextBox22, endTextBox23, endTextBox24, }; enabledTextBoxes = new List(); StartForceCloseHandler(); } /// /// Constructor to fill in end states /// /// Number of text boxes for serial numbers public TestStartEndForm(int waterMetersCount, string[] wmStartStateStr, bool[] disabled, float refVolume, float errLimLo, float errLimHi) { endStates = true; this.WaterMetersCount = waterMetersCount; this.WMStartStateStr = wmStartStateStr; if (wmStartStateStr == null || wmStartStateStr.Length != waterMetersCount) throw (new Exception("Invalid 'wmStartStateStr' argument")); this.disabled = disabled; this.refVolume = refVolume; this.warningLimLo = 2 * errLimLo; this.warningLimHi = 2 * errLimHi; InitializeComponent(); WMEndState = new float[waterMetersCount]; completed = false; StartForceCloseHandler(); } /// Parameterless constructor for all watermeters public TestStartEndForm() : this(Program.WMsCount, null) { } private void CycleEndForm_Load(object sender, EventArgs e) { Localize(); //Height = 115 + 90 * WaterMetersCount; if (WaterMetersCount < 1) { label1.Visible = startTextBox1.Visible = endTextBox1.Visible = false; } if (WaterMetersCount < 2) { label2.Visible = startTextBox2.Visible = endTextBox2.Visible = false; } if (WaterMetersCount < 3) { label3.Visible = startTextBox3.Visible = endTextBox3.Visible = false; } if (WaterMetersCount < 4) { label4.Visible = startTextBox4.Visible = endTextBox4.Visible = false; } if (WaterMetersCount < 5) { label5.Visible = startTextBox5.Visible = endTextBox5.Visible = false; } if (WaterMetersCount < 6) { label6.Visible = startTextBox6.Visible = endTextBox6.Visible = false; } if (WaterMetersCount < 7) { label7.Visible = startTextBox7.Visible = endTextBox7.Visible = false; } if (WaterMetersCount < 8) { label8.Visible = startTextBox8.Visible = endTextBox8.Visible = false; } if (WaterMetersCount < 9) { label9.Visible = startTextBox9.Visible = endTextBox9.Visible = false; } if (WaterMetersCount < 10) { label10.Visible = startTextBox10.Visible = endTextBox10.Visible = false; } if (WaterMetersCount < 11) { label11.Visible = startTextBox11.Visible = endTextBox11.Visible = false; } if (WaterMetersCount < 12) { label12.Visible = startTextBox12.Visible = endTextBox12.Visible = false; } if (WaterMetersCount < 13) { label13.Visible = startTextBox13.Visible = endTextBox13.Visible = false; } if (WaterMetersCount < 14) { label14.Visible = startTextBox14.Visible = endTextBox14.Visible = false; } if (WaterMetersCount < 15) { label15.Visible = startTextBox15.Visible = endTextBox15.Visible = false; } if (WaterMetersCount < 16) { label16.Visible = startTextBox16.Visible = endTextBox16.Visible = false; } if (WaterMetersCount < 17) { label17.Visible = startTextBox17.Visible = endTextBox17.Visible = false; } if (WaterMetersCount < 18) { label18.Visible = startTextBox18.Visible = endTextBox18.Visible = false; } if (WaterMetersCount < 19) { label19.Visible = startTextBox19.Visible = endTextBox19.Visible = false; } if (WaterMetersCount < 20) { label20.Visible = startTextBox20.Visible = endTextBox20.Visible = false; } if (WaterMetersCount < 21) { label21.Visible = startTextBox21.Visible = endTextBox21.Visible = false; } if (WaterMetersCount < 22) { label22.Visible = startTextBox22.Visible = endTextBox22.Visible = false; } if (WaterMetersCount < 23) { label23.Visible = startTextBox23.Visible = endTextBox23.Visible = false; } if (WaterMetersCount < 24) { label24.Visible = startTextBox24.Visible = endTextBox24.Visible = false; } if (endStates) { for (int i = 0; i < 24; i++) { if (WaterMetersCount > i) startTextBoxes[i].Text = WMStartStateStr[i]; if (disabled != null && disabled.Length > i && disabled[i]) { endTextBoxes[i].Enabled = false; } else { endTextBoxes[i].Enabled = true; enabledTextBoxes.Add(endTextBoxes[i]); } } } else { for (int i = 0; i < 24; i++) { if (disabled != null && disabled.Length > i && disabled[i]) { startTextBoxes[i].Enabled = false; } else { startTextBoxes[i].Enabled = true; enabledTextBoxes.Add(startTextBoxes[i]); } } } } void Localize() { Text = Strings.Water_Meter_States; label1.Text = Strings.Water_Meter + " 1"; label2.Text = Strings.Water_Meter + " 2"; label3.Text = Strings.Water_Meter + " 3"; label4.Text = Strings.Water_Meter + " 4"; label5.Text = Strings.Water_Meter + " 5"; label6.Text = Strings.Water_Meter + " 6"; label7.Text = Strings.Water_Meter + " 7"; label8.Text = Strings.Water_Meter + " 8"; label9.Text = Strings.Water_Meter + " 9"; label10.Text = Strings.Water_Meter + " 10"; label11.Text = Strings.Water_Meter + " 11"; label12.Text = Strings.Water_Meter + " 12"; label13.Text = Strings.Water_Meter + " 13"; label14.Text = Strings.Water_Meter + " 14"; label15.Text = Strings.Water_Meter + " 15"; label16.Text = Strings.Water_Meter + " 16"; label17.Text = Strings.Water_Meter + " 17"; label18.Text = Strings.Water_Meter + " 18"; label19.Text = Strings.Water_Meter + " 19"; label20.Text = Strings.Water_Meter + " 20"; label21.Text = Strings.Water_Meter + " 21"; label22.Text = Strings.Water_Meter + " 22"; label23.Text = Strings.Water_Meter + " 23"; label24.Text = Strings.Water_Meter + " 24"; startLabel.Text = Strings.Start; endLabel.Text = Strings.End; okButton.Text = Strings.OkBtnText; } private void okButton_Click(object sender, EventArgs e) { try { if (endStates) { if (endTextBox1.Enabled) WMEndState[0] = Utils.ParseUFloat(endTextBox1.Text); if (endTextBox2.Enabled) WMEndState[1] = Utils.ParseUFloat(endTextBox2.Text); if (endTextBox3.Enabled) WMEndState[2] = Utils.ParseUFloat(endTextBox3.Text); if (endTextBox4.Enabled) WMEndState[3] = Utils.ParseUFloat(endTextBox4.Text); if (endTextBox5.Enabled) WMEndState[4] = Utils.ParseUFloat(endTextBox5.Text); if (endTextBox6.Enabled) WMEndState[5] = Utils.ParseUFloat(endTextBox6.Text); if (endTextBox7.Enabled) WMEndState[6] = Utils.ParseUFloat(endTextBox7.Text); if (endTextBox8.Enabled) WMEndState[7] = Utils.ParseUFloat(endTextBox8.Text); if (endTextBox9.Enabled) WMEndState[8] = Utils.ParseUFloat(endTextBox9.Text); if (endTextBox10.Enabled) WMEndState[9] = Utils.ParseUFloat(endTextBox10.Text); if (endTextBox11.Enabled) WMEndState[10] = Utils.ParseUFloat(endTextBox11.Text); if (endTextBox12.Enabled) WMEndState[11] = Utils.ParseUFloat(endTextBox12.Text); if (endTextBox13.Enabled) WMEndState[12] = Utils.ParseUFloat(endTextBox13.Text); if (endTextBox14.Enabled) WMEndState[13] = Utils.ParseUFloat(endTextBox14.Text); if (endTextBox15.Enabled) WMEndState[14] = Utils.ParseUFloat(endTextBox15.Text); if (endTextBox16.Enabled) WMEndState[15] = Utils.ParseUFloat(endTextBox16.Text); if (endTextBox17.Enabled) WMEndState[16] = Utils.ParseUFloat(endTextBox17.Text); if (endTextBox18.Enabled) WMEndState[17] = Utils.ParseUFloat(endTextBox18.Text); if (endTextBox19.Enabled) WMEndState[18] = Utils.ParseUFloat(endTextBox19.Text); if (endTextBox20.Enabled) WMEndState[19] = Utils.ParseUFloat(endTextBox20.Text); if (endTextBox21.Enabled) WMEndState[20] = Utils.ParseUFloat(endTextBox21.Text); if (endTextBox22.Enabled) WMEndState[21] = Utils.ParseUFloat(endTextBox22.Text); if (endTextBox23.Enabled) WMEndState[22] = Utils.ParseUFloat(endTextBox23.Text); if (endTextBox24.Enabled) WMEndState[23] = Utils.ParseUFloat(endTextBox24.Text); } else { if (startTextBox1.Enabled) { WMStartStateStr[0] = startTextBox1.Text; WMStartState[0] = Utils.ParseUFloat(startTextBox1.Text); } if (startTextBox2.Enabled) { WMStartStateStr[1] = startTextBox2.Text; WMStartState[1] = Utils.ParseUFloat(startTextBox2.Text); } if (startTextBox3.Enabled) { WMStartStateStr[2] = startTextBox3.Text; WMStartState[2] = Utils.ParseUFloat(startTextBox3.Text); } if (startTextBox4.Enabled) { WMStartStateStr[3] = startTextBox4.Text; WMStartState[3] = Utils.ParseUFloat(startTextBox4.Text); } if (startTextBox5.Enabled) { WMStartStateStr[4] = startTextBox5.Text; WMStartState[4] = Utils.ParseUFloat(startTextBox5.Text); } if (startTextBox6.Enabled) { WMStartStateStr[5] = startTextBox6.Text; WMStartState[5] = Utils.ParseUFloat(startTextBox6.Text); } if (startTextBox7.Enabled) { WMStartStateStr[6] = startTextBox7.Text; WMStartState[6] = Utils.ParseUFloat(startTextBox7.Text); } if (startTextBox8.Enabled) { WMStartStateStr[7] = startTextBox8.Text; WMStartState[7] = Utils.ParseUFloat(startTextBox8.Text); } if (startTextBox9.Enabled) { WMStartStateStr[8] = startTextBox9.Text; WMStartState[8] = Utils.ParseUFloat(startTextBox9.Text); } if (startTextBox10.Enabled) { WMStartStateStr[9] = startTextBox10.Text; WMStartState[9] = Utils.ParseUFloat(startTextBox10.Text); } if (startTextBox11.Enabled) { WMStartStateStr[10] = startTextBox11.Text; WMStartState[10] = Utils.ParseUFloat(startTextBox11.Text); } if (startTextBox12.Enabled) { WMStartStateStr[11] = startTextBox12.Text; WMStartState[11] = Utils.ParseUFloat(startTextBox12.Text); } if (startTextBox13.Enabled) { WMStartStateStr[12] = startTextBox13.Text; WMStartState[12] = Utils.ParseUFloat(startTextBox13.Text); } if (startTextBox14.Enabled) { WMStartStateStr[13] = startTextBox14.Text; WMStartState[13] = Utils.ParseUFloat(startTextBox14.Text); } if (startTextBox15.Enabled) { WMStartStateStr[14] = startTextBox15.Text; WMStartState[14] = Utils.ParseUFloat(startTextBox15.Text); } if (startTextBox16.Enabled) { WMStartStateStr[15] = startTextBox16.Text; WMStartState[15] = Utils.ParseUFloat(startTextBox16.Text); } if (startTextBox17.Enabled) { WMStartStateStr[16] = startTextBox17.Text; WMStartState[16] = Utils.ParseUFloat(startTextBox17.Text); } if (startTextBox18.Enabled) { WMStartStateStr[17] = startTextBox18.Text; WMStartState[17] = Utils.ParseUFloat(startTextBox18.Text); } if (startTextBox19.Enabled) { WMStartStateStr[18] = startTextBox19.Text; WMStartState[18] = Utils.ParseUFloat(startTextBox19.Text); } if (startTextBox20.Enabled) { WMStartStateStr[19] = startTextBox20.Text; WMStartState[19] = Utils.ParseUFloat(startTextBox20.Text); } if (startTextBox21.Enabled) { WMStartStateStr[20] = startTextBox21.Text; WMStartState[20] = Utils.ParseUFloat(startTextBox21.Text); } if (startTextBox22.Enabled) { WMStartStateStr[21] = startTextBox22.Text; WMStartState[21] = Utils.ParseUFloat(startTextBox22.Text); } if (startTextBox23.Enabled) { WMStartStateStr[22] = startTextBox23.Text; WMStartState[22] = Utils.ParseUFloat(startTextBox23.Text); } if (startTextBox24.Enabled) { WMStartStateStr[23] = startTextBox24.Text; WMStartState[23] = Utils.ParseUFloat(startTextBox24.Text); } } } catch(Exception e) { log.ErrorFormat("Exception: {0}", e.Message); return; } 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 /// /// Calculate the approximate error and verify whether it is within limits. /// Make an exclamation mark visible if out of range. /// Similar event handler is implemented for all exdTextBoxes (1..24). /// private void endTextBox1_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox1.Text); float startState = Utils.ParseUFloat(startTextBox1.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { }; exclamation1.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox2_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox2.Text); float startState = Utils.ParseUFloat(startTextBox2.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation2.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox3_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox3.Text); float startState = Utils.ParseUFloat(startTextBox3.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation3.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox4_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox4.Text); float startState = Utils.ParseUFloat(startTextBox4.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation4.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox5_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox5.Text); float startState = Utils.ParseUFloat(startTextBox5.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation5.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox6_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox6.Text); float startState = Utils.ParseUFloat(startTextBox6.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation6.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox7_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox7.Text); float startState = Utils.ParseUFloat(startTextBox7.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation7.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox8_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox8.Text); float startState = Utils.ParseUFloat(startTextBox8.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation8.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox9_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox9.Text); float startState = Utils.ParseUFloat(startTextBox9.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation9.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox10_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox10.Text); float startState = Utils.ParseUFloat(startTextBox10.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation10.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox11_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox11.Text); float startState = Utils.ParseUFloat(startTextBox11.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation11.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox12_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox12.Text); float startState = Utils.ParseUFloat(startTextBox12.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation12.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox13_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox13.Text); float startState = Utils.ParseUFloat(startTextBox13.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation13.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox14_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox14.Text); float startState = Utils.ParseUFloat(startTextBox14.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation14.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox15_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox15.Text); float startState = Utils.ParseUFloat(startTextBox15.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation15.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox16_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox16.Text); float startState = Utils.ParseUFloat(startTextBox16.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation16.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox17_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox17.Text); float startState = Utils.ParseUFloat(startTextBox17.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation17.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox18_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox18.Text); float startState = Utils.ParseUFloat(startTextBox18.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation18.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox19_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox19.Text); float startState = Utils.ParseUFloat(startTextBox19.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation19.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox20_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox20.Text); float startState = Utils.ParseUFloat(startTextBox20.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation20.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox21_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox21.Text); float startState = Utils.ParseUFloat(startTextBox21.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation21.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox22_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox22.Text); float startState = Utils.ParseUFloat(startTextBox22.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation22.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox23_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox23.Text); float startState = Utils.ParseUFloat(startTextBox23.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation23.Visible = (err < warningLimLo) || (warningLimHi < err); } private void endTextBox24_TextChanged(object sender, EventArgs e) { float err = 0; try { float endState = Utils.ParseUFloat(endTextBox24.Text); float startState = Utils.ParseUFloat(startTextBox24.Text); err = 100.0f * (endState - startState - refVolume) / refVolume; } catch { err = 1000.0f; }; exclamation24.Visible = (err < warningLimLo) || (warningLimHi < err); } /// /// Process a key press within any enabled text boxe /// /// /// /// TextBox control which received the event private void ProcKeyPress(object sender, KeyPressEventArgs e, TextBox currentFocusOwner) { if (e.KeyChar == '+') { /// Process '+' key ..... Form completed okButton_Click(sender, e); } if (e.KeyChar == '\r') { /// Process key ..... Next text field if (enabledTextBoxes.Count < 2) return; /// There is just one enabled textbox for (int i = 0; i < enabledTextBoxes.Count; i++) { if (enabledTextBoxes[i] == currentFocusOwner) { /// Change focus to the next enabled text box enabledTextBoxes[(i + 1) % enabledTextBoxes.Count].Focus(); return; } } } } private void startTextBox1_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox1); } private void startTextBox2_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox2); } private void startTextBox3_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox3); } private void startTextBox4_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox4); } private void startTextBox5_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox5); } private void startTextBox6_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox6); } private void startTextBox7_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox7); } private void startTextBox8_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox8); } private void startTextBox9_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox9); } private void startTextBox10_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox10); } private void startTextBox11_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox11); } private void startTextBox12_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox12); } private void startTextBox13_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox13); } private void startTextBox14_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox14); } private void startTextBox15_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox15); } private void startTextBox16_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox16); } private void startTextBox17_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox17); } private void startTextBox18_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox18); } private void startTextBox19_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox19); } private void startTextBox20_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox20); } private void startTextBox21_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox21); } private void startTextBox22_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox22); } private void startTextBox23_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox23); } private void startTextBox24_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, startTextBox24); } private void endTextBox1_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox1); } private void endTextBox2_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox2); } private void endTextBox3_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox3); } private void endTextBox4_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox4); } private void endTextBox5_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox5); } private void endTextBox6_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox6); } private void endTextBox7_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox7); } private void endTextBox8_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox8); } private void endTextBox9_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox9); } private void endTextBox10_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox10); } private void endTextBox11_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox11); } private void endTextBox12_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox12); } private void endTextBox13_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox13); } private void endTextBox14_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox14); } private void endTextBox15_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox15); } private void endTextBox16_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox16); } private void endTextBox17_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox17); } private void endTextBox18_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox18); } private void endTextBox19_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox19); } private void endTextBox20_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox20); } private void endTextBox21_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox21); } private void endTextBox22_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox22); } private void endTextBox23_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox23); } private void endTextBox24_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, endTextBox24); } } }