Я никогда не использовал элементы управления вы упоминая при этом я не знаю причину, почему вы должны установить CultureInfo во время выполнения для указанного управления. Поэтому мой ответ основан на вашем вопросе о том, как установить CultureInfo во время выполнения. Если это не то, что вы хотели, просто не обращайте внимания на мой ответ.
Если мы программировали настольное приложение, он CultureInfo может быть изменен с помощью:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US")
'en-US = American English
К сожалению, это невозможно в CF.NET.
На самом деле, насколько я знаю, нет официального или поддерживаемого способа изменения настроек CultureInfo (и региональных настроек) устройства в CF.NET во время выполнения. Возможно, можно изменить региональные настройки в реестре, но это будет означать, что устройство необходимо перезагрузить.
В моей кодовой библиотеке, однако, у меня есть фрагмент кода, который я нашел некоторое время назад и который я тестировал только в эмуляторе, где он работал отлично. Это считается «взломом» и может быть рискованным, но при тестировании его в эмуляторе я никогда не сталкивался с какими-либо проблемами. Здесь в 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
Примечание: Обратите внимание на тот факт, что если частная переменная m_userDefaultCulture изменит свое название в будущей версии, то приведенный выше код может сломаться. Также имя переменной может иметь другое имя в локализованной версии Windows Mobile - возможно, в испанской версии это называется чем-то другим. Я не знаю, поэтому я думаю, вы должны попробовать это для себя.
Помимо вышеуказанного примечания, код выше должен работать (пересекая мои пальцы), пока региональные настройки, которые вы хотите использовать, присутствуют на устройстве. Чтобы узнать, какие региональные настройки поддерживаются устройством, вы можете использовать отличный код, который Ctacke показал here.
Удачи вам!