Используйте tristate CheckBox в C#
Обычно CheckBox проверяется или не проверяется. Вы можете поймать обработчик события CheckedChanged, чтобы узнать, когда значение элемента управления было изменено, и вы можете использовать его свойство Checked, чтобы получить его текущее значение.
A CheckBox также может отображать третье неопределенное состояние. Например, программа может использовать три состояния, чтобы указать, что выбрана группа параметров (отмечена), не выбрана (не отмечена) или выбраны некоторые параметры (неопределенные).
Для этого сначала установите свойство >> элемента управления ComboBox в значение True. Затем перехватите событие CheckStateChanged элемента управления CheckedChanged. В этом случае используйте свойство CheckState элемента управления, чтобы проверить, не проверено, не отмечено или неопределено.
Следующий код показывает, как этот пример устанавливает состояние управления лентой ComboBox неопределенным при запуске программы.
// Сделать обед неопределенным. private void Form1_Load(object sender, EventArgs e) { chkLunch.CheckState = CheckState.Indeterminate; }
Следующий код показывает, как программа отображает CheckBox состояния в ListBox программы при изменении состояний. Программа использует один и тот же обработчик событий для всех трех элементов управления CheckBox.
// Отобразить текущее состояние CheckBox. private void chkMeal_CheckStateChanged(object sender, EventArgs e) { CheckBox chk = sender as CheckBox; lstState.Items.Add(chk.Text + ": " + chk.CheckState); }