Я локализую свой интерфейс.Я перевел различный контроль.Теперь, когда я выбираю язык, я вызываю мой changeLanguage()
метод
void Form1::changeLanguage(LanguageIndex languageIndex)
{
String^ language = getLanguageString(languageIndex); // returns "en", "it", ...
ComponentResourceManager^ resourceManger = gcnew ComponentResourceManager(this->GetType());
CultureInfo^ cultureInfo = gcnew CultureInfo(language);
applyResourceToAllControls(resourceManger, cultureInfo, this->Controls);
languageIndex_ = languageIndex;
}
Вот метод applyResourceToAllControls()
void Form1::applyResourceToAllControls(ComponentResourceManager^ resourceManger,
CultureInfo^ cultureInfo,
Windows::Forms::Control::ControlCollection^ controls)
{
for(int i = 0; i < controls->Count; i++)
{
resourceManger->ApplyResources(controls[i], controls[i]->Name, cultureInfo);
applyResourceToAllControls(resourceManger, cultureInfo, controls[i]->Controls);
}
}
Этот подход работает для нескольких элементов управления, но не работает дляменю / подменю и StatusStrip;цикл фактически не перемещается по дочерним элементам этих элементов управления.Я полагаю, это связано с тем фактом, что «потомки» - это Предметы, а не фактические потомки / элементы управления.
Любая идея, как я могу зациклить все (действительно все!) Элементы управления?
Я могусоздайте пользовательские методы для навигации по StatuStrip и MenuStrip (будет всего два метода), но я полагаю, что существует способ сделать все из одного цикла.
Как вы можете догадаться, я работаю в C ++.Но нормально иметь примеры в C #.