Как установить культуру для всего приложения 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.DefaultThreadCurrentCulture
CultureInfo.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());
}