Let's try this before we take this further. The TabControl has optimization settings, set by the TabControl.ClientMode.
By default, this property is set to MemoryOptimized, which effectively means that every time you switch to another Tab of your TabControl, the contents of the Tab are removed from the browser. I think this would explain a lot of the behaviour you are experiencing.
Try setting TabControl.ClientMode to DrawingOptimized, which does the opposite, it minimizes the effort in redrawing the control when you next visit the Tab, meaning it's resources are kept in the browser.
I think this may explain most, if not all of your problems.
Hope this helps,