Разрешить ограниченный выбор CheckBox в C#
Обычно пользователь может проверить или снять флажок CheckBox независимо от других параметров. Это сообщение показывает, как вы можете разрешить ограниченный выбор CheckBox. В этом примере пользователь может выбрать до 2 из CheckBox es.
Всякий раз, когда пользователь нажимает CheckBox, вы можете просмотреть CheckBox es и убедиться, что выбраны только два. К сожалению, это потребует от пользователя выбора опций в определенном порядке. Например, если вы просто выполнили последовательность CheckBox в порядке и сохранили первые два варианта, тогда пользователю будет сложно сделать выбор позже в списке.
В этом примере используется другой подход, позволяющий ограничить выбор CheckBox. Он сохраняет список выбранных CheckBox. Когда вы делаете новый выбор, программа просматривает список и отменяет выбор самого старого. Таким образом, пользователь может сделать выбор в любом порядке и сохранить последние варианты.
Все CheckBox es используют следующий обработчик событий для управления выборами.
// Выбранные CheckBoxes. private int NumAllowedOptions = 2; private ListSelections = new List (); // Удостоверьтесь, что у нас не так много вариантов. private void chkOption_CheckedChanged(object sender, EventArgs e) { CheckBox chk = sender as CheckBox; if (chk.Checked) { // Добавьте этот выбор. Selections.Add(chk); // Удостоверьтесь, что у нас их слишком много. if (Selections.Count > NumAllowedOptions) { // Удалить самый старый выбор. Selections[0].Checked = false; } } else { // Удалить этот выбор. Selections.Remove(chk); } }
В списке Selections содержится текущий флажок CheckBox.
Когда пользователь проверяет или снимает флажок, обработчик события обновляет список. Если отмечен CheckBox, код добавляет его в список. Если число CheckBox es в списке больше допустимого числа (2 в этом примере), программа отменяет CheckBox, который был в списке самым длинным. (Это вызывает обработчик события CheckedChanged этого элемента управления, который делает следующий код удаляемым из списка.)