Je n'ai jamais utilisé les commandes que vous mentionnez et je ne connais la la raison pour laquelle vous devez définir CultureInfo lors de l'exécution pour lesdits contrôles. Par conséquent, ma réponse est basée sur votre question comment configurer CultureInfo à l'exécution. Si ce n'est pas ce que vous vouliez, ne tenez pas compte de ma réponse.
Si nous programmerons une application de bureau, le CultureInfo pourrait être changé en utilisant:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US")
'en-US = American English
Malheureusement, cela est impossible dans CF.NET.
En fait, autant que je sache, il n'y a pas de manière officielle ou supportée que vous pouvez changer le CultureInfo (et les paramètres régionaux) de l'appareil dans CF.NET pendant l'exécution. On pourrait, peut-être, modifier les paramètres régionaux dans le registre, mais cela signifierait que l'appareil doit être redémarré.
Dans ma bibliothèque de code, cependant, j'ai un extrait de code que j'ai trouvé il y a quelque temps et que j'ai testé seulement dans un émulateur où ça a marché très bien. Il est considéré comme un "hack" et peut être risqué mais en le testant dans l'émulateur, je n'ai jamais rencontré de problèmes. Ici, il est en VB.Net:
'I declare the following statement
Dim myCIintl As New Globalization.CultureInfo("en-US") 'where en-US is for Ame-English
'Then I call the following sub
SetDefaultLocale(myCIintl)
'Here is the code of the sub
Public Shared Sub SetDefaultLocale(ByVal locale As System.Globalization.CultureInfo)
If Nothing Is locale Then
Throw New ArgumentNullException("locale")
End If
Dim fi As System.Reflection.FieldInfo = GetType(System.Globalization.CultureInfo).GetField _
("m_userDefaultCulture", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Static)
If Nothing Is fi Then
Throw New NotSupportedException("Setting locale is not supported in this version of the framework.")
End If
fi.SetValue(Nothing, locale)
End Sub
Note: S'il vous plaît être conscient du fait que si la variable privée m_userDefaultCulture changera son nom dans une version ultérieure, puis au-dessus du code peut se briser. En outre, le nom de la variable peut avoir un autre nom dans une version localisée de Windows Mobile - peut-être dans la version espagnole, il est appelé quelque chose d'autre. Je ne sais pas donc je suppose que vous devez l'essayer pour vous. Outre la note ci-dessus, le code ci-dessus devrait fonctionner (croiser les doigts) tant que les réglages régionaux que vous souhaitez utiliser sont présents sur l'appareil. Pour voir quels paramètres régionaux sont pris en charge par l'appareil, vous pouvez utiliser l'excellent code que Ctacke a montré here.
Bonne chance!