您可以在以下位置更改测量系统:
Windows设置=>时间和语言=>其他日期,时间和 区域设置=>更改日期,时间或数字格式=> 其他设置=>测量系统
在C#中使用RegionInfo.CurrentRegion.IsMetric
时,此数据与您在设置中选择的内容无关。
如何从当前选择的测量系统的C#代码中访问?
答案 0 :(得分:0)
好的,我找到了解决方法(c#):
Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Control Panel\International", "iMeasure", 0)
这是Windows注册表,用于存储有关所选测量系统的信息(而不是绑定到区域的信息)。
答案 1 :(得分:0)
请记住,以下这种单行代码在大多数情况下在手动更改公制/美国制单位时不起作用,因此请勿使用此下一行
System.Globalization.RegionInfo.CurrentRegion.IsMetric;
@salverio写的东西很完美。
using System;
using Microsoft.Win32;
public static bool IsMetric(string KeyPath,
string KeyName)
{
try
{
string input;
input = ReadRegistry(KeyPath, KeyName);
if (input == "0")
{
return true;
}
else if (input == "1")
{
return false;
}
return System.Globalization.RegionInfo.CurrentRegion.IsMetric;
}
catch (Exception ex)
{
return System.Globalization.RegionInfo.CurrentRegion.IsMetric;
}
}
public static string ReadRegistry(string path,
string name)
{
try
{
string output = "";
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(path))
{
if (key != null)
{
object o = key.GetValue(name);
if (o != null)
{
output = o as string;
}
}
}
return output;
}
catch (Exception ex)
{
return "";
}
}
只需调用函数IsMetric(注册表项路径,注册表项名称)
在哪里
KeyPath = @"Control Panel\International";
KeyName = "iMeasure";