private void RelayBtn_Click(object sender, RoutedEventArgs e) { int relay_index = -1; for (int i = 0; i < RelayBtns.Count(); ++i) { if (RelayBtns[i] == sender) { relay_index = i; break; } } if (relay_index == -1) { throw new Exception(); } //if the relay is currently off, the pre-charge box must be checked. lets automatically clear it here. if (BatteryWriteData.GetRelayState(relay_index) == false) { BatteryWriteData.SetRelayPrechargeState(relay_index, false); BatteryWriteData.SetRelayState(relay_index, true); RelayPrechargeCheckboxes[relay_index].IsChecked = false; } else { //if the relay is currently on, turn it off. BatteryWriteData.SetRelayState(relay_index, false); if ((RelayPrechargeCheckboxes[relay_index].IsChecked.Value == false) && (relay_index != 1)) { RelayBtns[relay_index].IsEnabled = false; } } UpdateRelayBtnText(); }