호
CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator
현재 사용자 인터페이스 배양 소수 구분을 얻는다. 다른 문화권을 사용하여 다른 언어의 구분 기호를 사용할 수 있습니다. 기간 및 쉼표 :
내 시스템 (CultureInfo.GetCultures(CultureTypes.SpecificCultures).Count()
)에보고 된 166 개 문화에서
편집, 두 분리기가 사용되는 것 같다. 당신은 당신의 시스템이 시도 할 수 있습니다 :
을이 사실이라고 가정
var seps = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
.Select(ci => ci.NumberFormat.NumberDecimalSeparator)
.Distinct()
.ToList();
,이 방법합니다 (keyCode
가 무효 조합을 제거하기 위해 modifiers
플래그를 OR로되어 있습니다) 도움이 될 수 있습니다
private bool IsDecimalSeparator(Keys keyCode, Keys modifiers)
{
Keys fullKeyCode = keyCode | modifiers;
if (fullKeyCode.Equals(Keys.Decimal)) // value=110
return true;
string uiSep = CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator;
if (uiSep.Equals("."))
return fullKeyCode.Equals(Keys.OemPeriod); // value=190
else if (uiSep.Equals(","))
return fullKeyCode.Equals(Keys.Oemcomma); // value=188
throw new ApplicationException(string.Format("Unknown separator found {0}", uiSep));
}
마지막주의 사항 : Keys enumeration에 따르면 값 46은 DEL (삭제) 키 (Num Lock이 OFF 인 지점)에 해당합니다.
고려할 때 질문에 대답하지 않습니다. "NumberdecimalSeparator가 46 또는 '.'을 반환합니다. 다른 국가에서는 구분 기호로 ','를 사용하며 KeyDown 이벤트는 마침표를 누르면 KeyValue가 190으로 설정됩니다. " ... 질문에 쓰여 있습니다. –