View previous topic :: View next topic |
Author |
Message |
david@windward.net
Joined: 14 Nov 2008 Posts: 14
|
Posted: Tue Nov 25, 2008 7:07 pm Post subject: Won't show any forms |
|
|
Hi;
Ok, we purchased the product and ran it on our main program. It will not show any of the forms to be translated. The problem appears to be that all of our forms have constructors that are passed a parameter. VS 2008 does fine with that but Globalizer does not.
This eliminates a major reason we purchased Globalizer. Do you have any plans to display forms with parameters passed to their constructors in the near future?
thanks - dave |
|
Back to top |
|
|
Infralution
Joined: 28 Feb 2005 Posts: 5027
|
Posted: Tue Nov 25, 2008 9:47 pm Post subject: |
|
|
The solution is to add a default parameterless constructor to forms/controls that you wish to be able to preview using Globalizer. Here is the section from the help on this topic:
Quote: | Previewing Forms and Controls
Unlike many other localization tools, the Form preview displayed by Globalizer.NET is not a simulation of your form layout based on the resx file. Instead Globalizer.NET leverages the power of .NET Reflection to run your actual application code to display the form or control. This means that Globalizer.NET is able to display previews of complex Forms that use custom controls which typically can not be handled by other tools. Because Globalizer.NET runs the actual code for the form you need to follow a few simple guidelines when developing forms and controls which you want Globalizer.NET to preview:
* The Form/Control must have a default parameterless constructor in order for Globalizer.NET to be able to create it
The default constructor (and OnLoad method) should not invoke code that depends on external initialization (since this may cause an exception when Globalizer.NET attempts to create the form/control without the intialization having occurred)
* Event handlers for the control/form should not invoke code that depends on external initialization unless they have checked that the initialization has occurred. This prevents the user seeing errors when they click on buttons or controls within the form being previewed.
One simple coding technique to achieve the above conditions, for forms/controls that do need to access externally initialized data, is to provide a second constructor that takes the data object as a parameter. The form/control saves this in a member variable and each event handler that needs to access the data simply returns if the member variable is uninitialized (ie Null/Nothing).
If your Form constructor or event handlers do happen to invoke code that depends on external initializations, and this causes an exception to occur, then the Developer Edition of Globalizer.NET will catch the exception and display full details about the exception including stack trace and description. This enables you to insert the appropriate checks in your code to avoid the problem. The Translators Edition of Globalizer.NET also catches exceptions if they occur - but displays a less verbose (and less scary) message indicating that the preview for the Form or Control can not be displayed. |
Visual Studio is able to display forms that don't have parameterless constructors in the designer because it has access to the source code (it serializes/deserializes the code in InitializeComponent). Even Visual Studio cannot display a preview if the base class does not have a default constructor. We can't create an instance of forms using custom constructors which take parameters as we have no idea what valid parameters for the constructors would be. _________________ Infralution Support |
|
Back to top |
|
|
|