Ну, конечно, первым шагом к улучшению кода было бы удаление оператора if и присвоение включенного состояния элемента управления напрямую с проверенным состоянием элемента управления tbtnLock, например ...
control1.Enabled = !tbtnLock.Checked;
control2.Enabled = !tbtnLock.Checked;
это сократит ваш код, если наполовину сразу. Возможно, вы захотите присвоить это булевому первому случаю, если вы хотите выполнить дополнительную обработку позже (возможно, какой-то другой объект помогает определить состояние блокировки, например)
bool isEnabled = !tbtnLock.Checked;
control1.Enabled = isEnabled;
control2.Enabled = isEnabled;
Кроме того, мне нужно знать, какой элемент управления "лентой" вы используете. У вас есть ссылка?
Но, как вы уже намекнули, я хотел бы взглянуть на попытку найти совокупность элементов управления, пройтись по ним, проверить, не является ли элемент управления элементом управления tbtnLock, и отключить / включить при необходимости.
Кроме того, я бы порекомендовал переместить весь этот код в функцию вне дескриптора события, если вам нужно вызвать этот метод из другого кода. Что-то вроде ...
private void tbtnLock_Click(object sender, RibbonControlEventArgs e)
{
UpdateRibbonState();
}
private void UpdateRibbonState(){
//Code goes here
}
РЕДАКТИРОВАТЬ : Предположение, что «группа» (как описано в комментариях) имеет набор элементов управления ...
foreach(Control c in group.Controls)
{
if(c.Name != "tbtnLock")
{
c.Enabled = !tbtnLock.Checked;
}
}
Я не знаком с какими-либо встроенными элементами управления ленты .Net и, поскольку нет ссылки на сторонний набор), я делаю предположение о свойствах, доступных для "группы"