Следующее будет похоже на то, что вы делаете, но у вас есть необработанный случай в исходном коде: if ((! Value) && (r1.Checked)), r1.Enabled никогда не устанавливается (то же условие для г2). Если для r1.Enabled и r2.Enabled задано значение true, по умолчанию где-то может быть достаточно следующего кода.
r1.Enabled = value || r1.Checked;
r2.Enabled = value || r2.checked;
Если у вас странные зависимости, я не вижу ничего особенно чистого ...