कॉल
CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator
वर्तमान यूजर इंटरफेस संस्कृति के लिए दशमलव विभाजक हो जाता है। आप अन्य भाषाओं के लिए विभाजक प्राप्त करने के लिए अन्य संस्कृतियों का उपयोग कर सकते हैं।
संपादित
166 संस्कृतियों है कि मेरे प्रणाली (
CultureInfo.GetCultures(CultureTypes.SpecificCultures).Count()
) में रिपोर्ट कर रहे हैं से
, ऐसा लगता है कि केवल दो विभाजक उपयोग किया जाता है: अवधि और अल्पविराम। आप अपने सिस्टम में यह कोशिश कर सकते हैं: यह मानते हुए कि यह सच है
var seps = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
.Select(ci => ci.NumberFormat.NumberDecimalSeparator)
.Distinct()
.ToList();
, इस विधि सहायक हो सकता है (ध्यान दें कि keyCode
अवैध संयोजनों को खत्म करने के modifiers
ध्वज के साथ OR'ed है):
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 (हटाएं) कुंजी से मेल खाता है (यानी जब बिंदु लॉक बंद हो जाता है)।
यह विचार करते समय प्रश्न का उत्तर नहीं देता है: "नंबरडिसीमलसेपरेटर 46, या 'के रूप में लौटाता है। मेरे यूएस सिस्टम पर। कई अन्य देश विभाजक के रूप में ',' का उपयोग करते हैं। जब मैं अवधि दबाता हूं तो कीडाउन घटना 1 9 0 तक कीवैल्यू सेट करती है। " ... जैसा कि प्रश्न में लिखा गया है। –