首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Windows 10上访问区域附加设置的数据

在Windows 10上访问区域附加设置的数据
EN

Stack Overflow用户
提问于 2019-02-07 14:46:06
回答 3查看 354关注 0票数 2

您可以在以下方面更改测量系统:

=>时间和语言=>附加日期、时间和区域设置=>更改日期、时间或数字格式=>附加设置=>测量系统

RegionInfo.CurrentRegion.IsMetric中使用C#时,这些数据与您在设置中选择的内容无关。

如何从C#代码中访问当前选择的测量系统?

EN

回答 3

Stack Overflow用户

发布于 2019-02-08 11:05:43

好的,我找到了解决方案(C#):Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Control Panel\International", "iMeasure", 0)

是Windows注册表存储有关所选测量系统的信息(而不是绑定到区域的信息)。

票数 1
EN

Stack Overflow用户

发布于 2022-05-14 16:51:20

正如MS所记录的那样,RegionInfo.CurrentRegion.IsMetric应该能工作:

此属性的值基于通过“控制面板”的“区域和语言选项”部分选择的区域性。然而,在AppDomain的生命周期中,该信息可能会发生变化。RegionInfo类不会自动检测系统设置中的更改,但在调用ClearCachedData方法时将更新ClearCachedData属性。 RegionInfo.CurrentRegion性质

我在.NET Core6.0上进行了测试,每次更改控制面板中的单元时,Console.WriteLine(RegionInfo.CurrentRegion.IsMetric);都会打印出正确的值。您只需要在更改区域选项之后重新启动应用程序,或者调用ClearCachedData()

票数 0
EN

Stack Overflow用户

发布于 2020-10-21 18:09:22

请记住,在度量/美国、之间手动转换单位时,单行代码大多数情况下都不能工作,因此不要使用下面的行。

代码语言:javascript
运行
复制
System.Globalization.RegionInfo.CurrentRegion.IsMetric;

@salverio所写的作品效果很好。

代码语言:javascript
运行
复制
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(注册表项路径、注册表项名称)即可。

哪里,

代码语言:javascript
运行
复制
KeyPath = @"Control Panel\International";
KeyName = "iMeasure";
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54575900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档