Как установить культуру для всего приложения winform

Я хочу установить культуру для всего приложения winform.
Как я могу это сделать?
Я изменил свой Program.cs файл как это:

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Divar
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            var culture = new CultureInfo("en-US");
            CultureInfo.DefaultThreadCurrentCulture = culture;
            CultureInfo.DefaultThreadCurrentUICulture = culture;

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new RadForm1());
        }
    }
}

Я правильно сделал?


Также есть еще одна ссылка об этом:(Пожалуйста, посмотрите)
https://www.c-sharpcorner.com/forums/set-cultureinfo-for-winform-application

Это имеет ограниченный успех, поэтому в верхней части "Form1" до InitializeComponent() я разместил:

    System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-GB");
    Application.CurrentCulture = cultureInfo;
    System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-GB");

Необходимо ли добавлять эти три строки перед InitializeComponent() в каждой форме?

1 ответ

Решение

Установите эти два в Main до желаемой культуры:CultureInfo.DefaultThreadCurrentCultureCultureInfo.DefaultThreadCurrentUICulture

Кроме того, вы можете изменить Application.CurrentCulture всякий раз, когда вы хотите изменить культуру в текущем потоке приложения.

[STAThread]
static void Main()
{
    var culture = new CultureInfo("en-US");

    //Culture for any thread
    CultureInfo.DefaultThreadCurrentCulture = culture;

    //Culture for UI in any thread
    CultureInfo.DefaultThreadCurrentUICulture = culture;

    //Culture for current thread (STA)
    //no need for: Application.CurrentCulture = culture;

    //Thread.CurrentThread.CurrentCulture == Application.CurrentCulture
    //no need for: Thread.CurrentThread.CurrentCulture = culture;

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new RadForm1());
}
Другие вопросы по тегам