void lstAddOnSystems_ItemCheck(object sender, ItemCheckEventArgs e) { //for single selection mode if (e.CurrentValue != CheckState.Checked) { if (_lastCheckedAddOnSystem != -1) { lstAddOnSystems.SetItemChecked(_lastCheckedAddOnSystem, false); } } _lastCheckedAddOnSystem = e.Index; //select the base systems which are supported by the checked add-on system lstBaseSystems.Items.Clear(); if (e.CurrentValue == CheckState.Checked) { return; //currently checked add-on system is unchecked } foreach (AddOnSystemInfo addOnSystemInfo in AddOnInfoHelper.GetAddOnSystemInfo(cmbAddOns.Text)) { if (addOnSystemInfo._addOnSystemName != lstAddOnSystems.SelectedItem.ToString()) { continue; } foreach (string supportedSystemName in addOnSystemInfo._supportedSystems) { foreach (string baseSystemName in _baseSystemNames) { if (EM_Helpers.DoesValueMatchPattern(supportedSystemName, baseSystemName)) { lstBaseSystems.Items.Add(baseSystemName); } } } } }
void cmbAddOns_SelectedIndexChanged(object sender, EventArgs e) {//list only the systems of the add-on which support at least one base system lstAddOnSystems.Items.Clear(); lstBaseSystems.Items.Clear(); _lastCheckedBaseSystem = -1; _lastCheckedAddOnSystem = -1; if (cmbAddOns.Text == string.Empty) { return; } foreach (AddOnSystemInfo addOnSystemInfo in AddOnInfoHelper.GetAddOnSystemInfo(cmbAddOns.Text)) { bool supportsAnySystems = false; foreach (string supportedSystemName in addOnSystemInfo._supportedSystems) { foreach (string baseSystemName in _baseSystemNames) { if (EM_Helpers.DoesValueMatchPattern(supportedSystemName, baseSystemName)) { supportsAnySystems = true; break; } } if (supportsAnySystems == true) { break; } } if (supportsAnySystems == false) { continue; } lstAddOnSystems.Items.Add(addOnSystemInfo._addOnSystemName); } }