but i suspect this is the only way.
It’s a way but not the only one. Since they were both added dynamically, you have the opportunity to create direct references - use them make the communication happen.
If you do not want to create direct references, you can still fetch the widgets from their container via GetChildAt or loop through all children to find what you need.