Технически возможно получить доступ к родительскому элементу управления и получить доступ к содержащимся в нем элементам управления, но это делает код очень сложным для обслуживания, потому что если вы измените структуру родительского элемента управления, вы нарушите код во всех из содержащихся страниц. Это можно было бы считать очень тесно связанным проектом, и он часто хрупок.
Если бы кто-то из уборщиков страниц вызывал событие при нажатии кнопки «Сохранить», то можно было бы придумать что-то более чистое. Затем ваш родительский фрейм может поглотить событие и обновить все, что он должен обновить после операции сохранения. Это проще в обслуживании, потому что ваши компоненты более слабо связаны, но все же вкладывают много знаний базы данных в ваши компоненты GUI. Такой дизайн может быть подходящим для относительно простого приложения, в котором вы не ожидаете много обслуживания или будущих улучшений.
Шаблон проектирования, который я предпочитаю (как и многие разработчики), заключается в том, чтобы изолировать обработку базы данных и бизнес-логику внутри одного или нескольких классов с помощью простого программного интерфейса, который можно легко протестировать. Компоненты GUI сохраняются как можно более простыми и тонкими, поэтому их можно легко изменить при необходимости. Это часто называют шаблоном Model-View-Controller, но есть и другие названия для него. В вашем примере класс «controller», который инкапсулирует вашу бизнес-логику, будет иметь свойства и методы для чтения и настройки информации, а также метод «Save» или «Commit», который записывает изменения в базу данных. После завершения сохранения возникает событие «Сохранено» или «Изменено», которое уведомляет все элементы управления («представления»), отображающие информацию об изменении информации, и они обновляются сами, основываясь на новых значениях свойств вашего класса контроллера. .