private void CheckedTunersChanged(object sender, ItemCheckEventArgs e) { using (ClosureGuard guard = new ClosureGuard(delegate { WMILineupListBox.ItemCheck += WMILineupListBox_ItemCheck; })) { WMILineupListBox.ItemCheck -= WMILineupListBox_ItemCheck; List <Device> checked_tuners = GetCheckedTuners(); Dictionary <long, int> lineup_tuner_counts = new Dictionary <long, int>(); foreach (Device tuner in checked_tuners) { foreach (Lineup lineup in tuner.WmisLineups) { int count = 0; lineup_tuner_counts.TryGetValue(lineup.Id, out count); lineup_tuner_counts[lineup.Id] = count + 1; } } for (int i = 0; i < WMILineupListBox.Items.Count; ++i) { Lineup wmi_lineup = (Lineup)WMILineupListBox.Items[i]; if (lineup_tuner_counts.ContainsKey(wmi_lineup.Id)) { if (lineup_tuner_counts[wmi_lineup.Id] == checked_tuners.Count) { WMILineupListBox.SetItemCheckState(i, CheckState.Checked); } else { WMILineupListBox.SetItemCheckState(i, CheckState.Indeterminate); } } else { WMILineupListBox.SetItemCheckState(i, CheckState.Unchecked); } } } }
private void CheckedTunersChanged(object sender, ItemCheckEventArgs e) { using (ClosureGuard guard = new ClosureGuard(delegate { WMILineupListBox.ItemCheck += WMILineupListBox_ItemCheck; })) { WMILineupListBox.ItemCheck -= WMILineupListBox_ItemCheck; List<Device> checked_tuners = GetCheckedTuners(); Dictionary<long, int> lineup_tuner_counts = new Dictionary<long, int>(); foreach (Device tuner in checked_tuners) { foreach (Lineup lineup in tuner.WmisLineups) { int count = 0; lineup_tuner_counts.TryGetValue(lineup.Id, out count); lineup_tuner_counts[lineup.Id] = count + 1; } } for (int i = 0; i < WMILineupListBox.Items.Count; ++i) { Lineup wmi_lineup = (Lineup)WMILineupListBox.Items[i]; if (lineup_tuner_counts.ContainsKey(wmi_lineup.Id)) { if (lineup_tuner_counts[wmi_lineup.Id] == checked_tuners.Count) { WMILineupListBox.SetItemCheckState(i, CheckState.Checked); } else { WMILineupListBox.SetItemCheckState(i, CheckState.Indeterminate); } } else { WMILineupListBox.SetItemCheckState(i, CheckState.Unchecked); } } } }