C# 通过C更改控制面板中的自定义格式#

C# 通过C更改控制面板中的自定义格式#,c#,.net,winforms,C#,.net,Winforms,我知道我的问题很奇怪,但也许我能在这里找到解决办法。 我通常希望以自定义格式更改某些内容,但我必须执行许多步骤: 单击开始按钮,然后单击控制面板 单击时钟、语言和区域,然后单击区域和语言选项 在“格式”选项卡上,单击“其他设置…” 更改我的设置,单击“确定”。 有没有办法只需点击一下就可以做到这一点?我有一些使用VisualStudio编写应用程序的知识。 对不起,我的英语不好。系统级 如果要在系统级别更改它们,可以使用C或PowerShell更改HKEY_CURRENT_USER\Contr

我知道我的问题很奇怪,但也许我能在这里找到解决办法。 我通常希望以自定义格式更改某些内容,但我必须执行许多步骤:

  • 单击开始按钮,然后单击控制面板
  • 单击时钟、语言和区域,然后单击区域和语言选项
  • 在“格式”选项卡上,单击“其他设置…”
  • 更改我的设置,单击“确定”。
  • 有没有办法只需点击一下就可以做到这一点?我有一些使用VisualStudio编写应用程序的知识。
    对不起,我的英语不好。

    系统级


    如果要在系统级别更改它们,可以使用C或PowerShell更改
    HKEY_CURRENT_USER\Control Panel\International
    的值

    C#示例

    PowerShell示例

    线程级别

    如果只想为当前线程范围更改这些值,可以通过以下方式进行设置:

    var current = System.Threading.Thread.CurrentThread.CurrentCulture;
    var culture = System.Globalization.CultureInfo.CreateSpecificCulture(current.Name); 
    culture.NumberFormat.NumberDecimalSeparator = ",";
    System.Threading.Thread.CurrentThread.CurrentCulture = culture;
    System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
    

    您可以通过
    Thread.CurrentCulture
    Thread.CurrentUICulture
    设置来指定使用的区域性设置。这可能与系统设置不同。如果要在系统级别更改它们,可以使用C或Powershell更改
    HKEY_CURRENT_USER\Control Panel\International
    的值。
    Set-ItemProperty -Path "HKCU:\Control Panel\International" -Name sDecimal -Value ","
    
    var current = System.Threading.Thread.CurrentThread.CurrentCulture;
    var culture = System.Globalization.CultureInfo.CreateSpecificCulture(current.Name); 
    culture.NumberFormat.NumberDecimalSeparator = ",";
    System.Threading.Thread.CurrentThread.CurrentCulture = culture;
    System.Threading.Thread.CurrentThread.CurrentUICulture = culture;