|
Программирование >> Автоматически обновляемые приложения
г Листинг 14.3: Заполнение элемента Listview информацией о выбранной .культуре -г Д. \ . > private void treeViewl AfterSelect(object sender. System.Windows.Forms.TreeViewEventArgs e) Culturelnfo selectedCulture; selectedCulture = (Culturelnfo)treeViewl.SelectedNode.Tag; if (selectedCulture.IsNeutralCulture == true) listViewl.Items[3].Subltems[1].Text = Нейтральная ; for (int X = 4; X <= 10; x++) listViewl.Items[x].Subltems[1].Text = Нейтральная культура ; else { Thread.CurrentThread.CurrentCulture = selectedCulture; listViewl.Items[3].Subltems[1].Text = Конкретная ; listViewl.Items[4].Subltems [1].Text = (DateTime.Now).ToShortDateString(); listViewl.Items[5].Subltems[1].Text = (DateTime.Now).ToLongDateString(); listViewl.Items[6].Subltems[1].Text = (DateTime.Now).ToShortTimeString(); listViewl.Items[7].Subltems[1].Text = (DateTime.Now).ToLongTimeString(); listViewl.Items[8].Subltems[l].Text = (35500.75).ToString( n ); listViewl.Items[9].Subltems[l].Text = (1750.25).ToString( c ); listViewl.Items[10].Subltems[1].Text = (selectedCulture.Calendar.ToStringO).Remove(0,21) ; во Tag соответствующего узла. Следующий оператор foreach перебирает все конкретные культуры и добавляет каждую из них к родительской нейтральной культуре в дереве. Если точно определенная культура отсутствует в системе, то она отображается красным цветом. Это была подготовительная работа. А основная работа приложения производится в обработчике события treeviewiAfterSeiect, приведенном В листинге 14.3. listViewl.Items[0].Subltems[1].Text = selectedCulture.Name; В этом коде сначала мы получаем экземпляр класса Culturelnfo, хранящийся в свойстве Tag узла: selectedCulture = (Culturelnfo)treeViewl.SelectedNode.Tag; Получив интересующие нас данные, мы можем теперь менять текущую культуру в приложении и наблюдать, как смена культуры влияет на данные, показываемые в элементе ListView. Необходимо помнить, что в потоке в качестве текущей культуры можно устанавливать только конкретную культуру, так как установка нейтральной культуры вызывает исключение. Поэтому делаем соответствующую проверку, а затем меняем текущую культуру в потоке, в котором работает приложение. После этого мы заполняем данными ListView. Во время выполнения программы вы увидите, что при смене культуры автоматически меняются названия месяцев, валюты и другие данные. Обратите внимание, что в приложении Culture Explorer некоторые культуры помечены красным цветом. Это не установленные в вашей системе культуры. Тем не менее, их тоже можно выбрать для просмотра, только при этом некоторые элементы могут выводиться некорректно, если соответствующие символы выбранного языка недоступны. Примечание Пример работы с культурами находится в папке CultureExplorer на прилагаемом диске. Разработка многоязычного приложения Теперь, когда мы достаточно узнали о культурах, можно приступать к разработке многоязыкового приложения. Visual Studio 2005 позволяет легко создавать приложения, в которых интерфейс будет легко адаптироваться к региональным настройкам пользователя. Сам процесс создания многоязычного приложения делится на два этапа. Сначала создается обычное приложение стандартным способом. Далее пользовательский интерфейс приложения переводится на другие языки. Рассмотрим на конкретном примере. Запустите новый проект и добавьте на форму обычную кнопку с надписью Good Morning. Предположим, что нам надо перевести надпись на этой кнопке на разные listViewl.Items[1].Subltems[1].Text = selectedCulture.EnglishName; listViewl.Items[2].Subltems[1].Text = selectedCulture.NativeName; языки, чтобы программой могли воспользоваться пользователи из разных стран. Для начала перейдите в окно Solution Explorer и щелкните переключатель Show АИ Files (если он еще не выбран). Раскройте узел Forml.cs. Там вы можете увидеть файл Forml.resx. Это исходный файл ресурсов для формы, который компилируется в двоичный код ресурсов для создаваемого приложения. Теперь установите свойство формы Localizable в значение True, а свойству формы Language присвойте значение German. Далее измените текст на кнопке. Предположим, мы присвоим тексту кнопки значение Guten Morgen. Обратите внимание, что после этих действий к форме был добавлен дополнительный файл ресурса Forml.de-DE.resx. Повторите еще раз эту операцию, выбрав в качестве языка Language значение Russian и присвоив кнопке текст Доброе утро. Visual Studio 2005 добавит в проект еще один файл Forml .ru-RU.resx. Таким образом, у нас имеются фактически три разных экземпляра формы. Экземпляр, редактируемый в дизайнере форм, зависит от значения свойства Language, установленного в этот момент. Чтобы убедиться в этом, сделаем такую операцию. Как вы понимаете, надпись, будучи переведенной на другой язык, может не поместиться на кнопке заданного размера. Сделаем так: выберем русскоязычный экземпляр формы, сделаем размер кнопки квадратным и увеличим ее в размерах, а в текст кнопки внесем изменения: Доброе утро, страна! И новый текст, и новые размеры кнопки сохранятся только в русской версии формы. Например, если вы переключитесь в немецкую версию формы, то размер кнопки будет восстановлен до исходного состояния. Теперь можно протестировать программу. Запустите проект, и у вас на экране должна появиться форма с русским интерфейсом (при условии, что у вас стоит локализованная русская версия Windows). Закройте программу. Внесите изменения в код программы. Перед вызовом метода InitializeComponent в конструкторе формы добавьте следующую строку: System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.Culturelnfo( de-DE ); Снова запустите проект, и вы теперь увидите немецкую версию программы! В принципе в использовании этого кода нет необходимости, поскольку в реальном приложении интерфейс будет выбран автоматически, исходя из региональных настроек Windows. Примечание Пример создания многоязычного приложения находится в папке Locale на прилагаемом диске.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |