Да, это самая трудоемкая часть работы с графическим интерфейсом, чтобы сделать приложение удобным для пользователя. Отключите это, включите это, скройте это, покажите это. Чтобы убедиться, что все элементы управления имеют правильные состояния при вставке / обновлении / удалении / выборе / отмене выбора объектов.
Я думаю, именно здесь вы отличаете хорошего программиста от плохого программиста. У плохого программиста есть активная кнопка «Сохранить», когда нет ничего, чтобы сохранить, хороший программист включает кнопку «сохранить» только тогда, когда есть вещи, которые нужно сохранить (только один пример из многих).
Мне нравится идея обработчика UIControlstate для этой цели.
Me.UIControlStates = UIControlstates.EditMode или что-то в этом роде.
Если у него есть такой объект, он может вызывать события при изменении состояния, и там мы помещаем код.
Sub UIControlStates_StateChanged(sender as object, e as UIControlStateArgs)
if e.Oldstate=UIControlStates.Edit and e.NewState=UIControlStates.Normal then
rem Edit was aborted, reset fields
ResetFields()
end if
select case e.NewState
case UIControlStates.Edit
Rem enalbe/disable/hide/show, whatever
Case UIControlStates.Normal
Rem enalbe/disable/hide/show, whatever
Case UIControlStates.Busy
Rem enalbe/disable/hide/show, whatever
Case Else
Rem enalbe/disable/hide/show, whatever
end select
end sub