Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Культуры


Автор: IEZ 20.9.2007, 13:30
Приветствую Всех!
Есть проблемка. Накида прожку работающую с культурами.
Т.е. есть форма на ней комбобокс и листвью.
В комбобоксе на русском языке выводится список культур.
При выборе культуры, в листью отображается (по уму должен) список наименований культур,
в соответствии с выбранной в комбобоксе.
Для русского языка список отображается на русском как нужно (см.аттач). А если взять другой язык,
к примеру украинский, то все выводится на английском.
В чем может быть проблема или что-то в виндах не доставлено?
Вот код проги:

Код

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();
        }
    }
}



В аттаче картинка для русской культуры. 

Автор: IEZ 20.9.2007, 13:31
А это для украинского.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)