Приветствую Всех! Есть проблемка. Накида прожку работающую с культурами. Т.е. есть форма на ней комбобокс и листвью. В комбобоксе на русском языке выводится список культур. При выборе культуры, в листью отображается (по уму должен) список наименований культур, в соответствии с выбранной в комбобоксе. Для русского языка список отображается на русском как нужно (см.аттач). А если взять другой язык, к примеру украинский, то все выводится на английском. В чем может быть проблема или что-то в виндах не доставлено? Вот код проги:
| Код | namespace Cultures { public partial class Cultures : Form { public Cultures() { InitializeComponent(); }
private void Cultures_Load(object sender, EventArgs e) { CultureInfo[] cultures = null;
// установка культуры для форматирования Thread.CurrentThread.CurrentCulture = new CultureInfo(1049); // установка культуры для ресурсов Thread.CurrentThread.CurrentUICulture = new CultureInfo(1049);
cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures); Array.Sort(cultures, new CultureComparer());
for (int i = 0; i < cultures.Length; i++) { cbCultures.Items.Add(cultures[i]); if (cultures[i].LCID == 1049) cbCultures.SelectedIndex = i; } }
public class CultureComparer : IComparer { #region IComparer Members
public int Compare(object x, object y) { if (x is CultureInfo && y is CultureInfo) {
CultureInfo c1 = (CultureInfo)x; CultureInfo c2 = (CultureInfo)y; return c1.DisplayName.CompareTo(c2.DisplayName); } else { throw new ArgumentException("wrong type for CultureComparer"); } }
#endregion }
private void cbCultures_SelectedIndexChanged(object sender, EventArgs e) { CultureInfo[] cultures = null;
ComboBox cb = (ComboBox)sender; CultureInfo culture = (CultureInfo)cb.SelectedItem;
// установка культуры для форматирования Thread.CurrentThread.CurrentCulture = new CultureInfo(culture.LCID); // установка культуры для ресурсов Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture.LCID);
cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures); Array.Sort(cultures, new CultureComparer());
lv.Items.Clear();
lv.BeginUpdate(); for (int i = 0; i < cultures.Length; i++) { lv.Items.Add(cultures[i].DisplayName); } lv.EndUpdate(); } } }
|
В аттаче картинка для русской культуры. |