Support Statement: VB6 Forms Upgrade Strategy
VB6 Forms Upgrade Strategy
WinForms was not designed to be consistent with VB6 forms. WinForms also reportedly has some glitches. The MigrationSupport.UI framework attempts to address some of these inconsistencies, but it is a work in progress. It does not yet, nor is it ever expected to, correctly emulate VB6 Form behavior under all possible conditions. Upgrade project teams should expect to redesign their forms event handling, lifetimes, and state management to fit a new application architecture design that is compatible with .NET. gmStudio can assist with the implementation of that new design from VB6 code – provided, the upgrade team is able to clearly define the desired results and implement appropriate migration rules.
The WPF framework is much more flexible and powerful than WinForms. Great Migrations' plan for solving the VB6 forms upgrade challenges is to promote the use of WPF as the target UI architecture. WPF is also still improving and growing in popularity. The business case for WPF as a target UI framework is stronger than the case for WinForms. Also, WPF clearly requires a paradigm shift, so there is less chance of migration teams mistakenly expecting a relatively cheap, simple, automated upgrade right out of the box.
Regardless of which .NET Forms framework is used, and whether or not MIgrationSupport.UI is used, all upgrade teams should plan and allocate budget for significant research, analysis, coding, and testing to understand how their legacy code worked in VB6 Forms conventions and to ensure things work properly in the upgraded .NET applications.
SubSystem=loc and MigrationSupportUI=on
Presently, MigrationSupport.UI.Form is automatically engaged withsubsystem=loc
. When using SubSystem=loc
, MigrationSupportUI can, and typically should, be suppressed by adding <Select MigrationSupportUI="off"/>
to the compile command block in your translation scripts. The gmStudio samples distributed with the 22-April-2016 release illustrate this technique. If you are using SubSystem=loc and MigrationSupportUI=off,
you will also have to modify the Subsystem=loc
surface forms for Form and MDI in the metalang files. See also this article on our web site: Runtime Library Requirements and Support.