Проблема заключается в операторе if в строке 16, потому что, если checkBox1 не установлен и один из других флажков установлен, он автоматически включит checkBox6. Потому что вы в основном проверяете, установлены ли какие-либо из других 4-х флажков, и если один из них не имеет checkBox1 для проверки, он будет go в строке 16 и передаст оператор if, потому что вы используете || операторы, рассмотрите возможность использования операторов && и посмотрите, как они работают.
C# операторов (C# ссылка)
Еще один способ сделать это - проверить элементы управления в форме, если они являются CheckBox, и сосчитать Количество проверенных флажков и уверенность в том, что это не экземпляр checkBox6. Таким образом, вы можете использовать бесконечные checkBoxes и иметь небольшую функцию, которая проверяет их все
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
int i = 0;
foreach (CheckBox item in this.Controls) // Loop all checkboxes in form
{
if (item.CheckState == CheckState.Checked && item != checkBox6) // Check if checkbox is checked and not instance of checkBox6
{
i++; // Increment amount of checkBoxes checked
}
}
checkBox6.Checked = i >= 2 ? true : false; // enable checkBox6 if more than 2 checkboxes are checked
}
Не забудьте добавить событие CheckChanged checkBox1_CheckedChanged для всех остальных флажков