문제

그것을 무시할 수 있습니까? CurrentCulture 그리고 CurrentUICulture Winforms의 특정 제어를 위해? 이 하나의 특정 통제가 다른 문화를 사용하도록합니까?

도움이 되었습니까?

해결책

당신은 당신이 선택한 cultureinfo를 인스턴스화하여 그것을 달성하고 그것을 함수 (예 : Tostring)에 매개 변수로 전달할 수 있습니다. thread.currentthread.currentculture 또는 thread.currentthread.currentuiculture에 할당하지 마십시오. 응용 프로그램의 문화가 변경되므로.

코드에서 :

CultureInfo myCulture = CultureInfo.GetCultureInfo("en-US");
Console.WriteLine(DateTime.Now.ToString(myCulture));

코드가 외부 코드를 실행 하고이 코드가 내부적으로 선택한 문화를 사용하도록 강요하려면 새 스레드를 만들고 해당 스레드에 문화를 할당 한 다음 해당 스레드를 코드를 실행하도록하여이를 수행 할 수 있습니다. 그 접근 방식과 함께 제공되는 스레딩 문제에주의를 기울이십시오.

스레드 샘플 :

string formattedDate = string.Empty;
Thread t = new Thread(delegate()
{
    // call external code without specifying culture
    formattedDate = DateTime.Now.ToString();  
    waitHandle.Set();
});
t.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
t.Start();
waitHandle.WaitOne(); // wait for the thread to finish
Console.WriteLine(formattedDate);

마지막 시점으로; 모르겠어요 당신은 Currentculture를 무시하고 싶지만, 그렇게하기 전에 두 번 생각할 것을 제안합니다. 사용자는 로케일에 따라 형식화 된 숫자를 날짜를 보는 데 익숙합니다. 특히 UI의 한 부분에서 발생하는 경우 혼란 스러울 수 있습니다.

다른 팁

나는 당신이 단일 컨트롤을 위해 그것을 할 수 있다고 생각하지 않지만 현재 스레드의 경우 다음과 같이 전환 할 수 있습니다.

System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("DE");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top