Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么.net';s StringFormat.SetDigitSubstitution方法根本不起作用?_C#_.net_Winforms - Fatal编程技术网

C# 为什么.net';s StringFormat.SetDigitSubstitution方法根本不起作用?

C# 为什么.net';s StringFormat.SetDigitSubstitution方法根本不起作用?,c#,.net,winforms,C#,.net,Winforms,我正在尝试用传统数字替换标准数字: System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("ja-JP"); using (Font font = new Font("Arial", 12, FontStyle.Regular)) { using (StringFormat format = new StringFormat()) { format.SetDi

我正在尝试用传统数字替换标准数字:

System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("ja-JP");
using (Font font = new Font("Arial", 12, FontStyle.Regular))
{
    using (StringFormat format = new StringFormat())
    {
        format.SetDigitSubstitution(culture.LCID, StringDigitSubstitute.Traditional);
        g.DrawString("Digits: 1 2 3 4 5 6 7 8 9 0", font, Brushes.Black, ClientRectangle, format);
    }
}
根据法律,该代码应该打印繁体字而不是西方数字,但事实并非如此。我还尝试使用“UD Digi Kyokasho NK-R”(一种日语字体)作为FontFamily参数,但它仍然使用西方数字

我试图在Windows窗体上实现这一点,并在Windows 10上使用.net framework 4.7.2进行测试


据我所知,所有语言都存在这个问题。

你可能在
文化信息.NumberFormat.NativeDigits中有(所谓的)西方数字。而在msdn示例中,阿拉伯语(
ar EG
,埃及)和泰语(
th
,泰国)有一个
NativeDigits
定义<代码>传统版
是一种用户本地化,可能不同于国家/官方版(如果没有定义,则与
国家版
相同)。
CultureInfo
定义是特定于系统的。例如,在Windows 10中,您可能会得到与Windows 7不同的结果。这还取决于系统更新。如果我没记错的话,数字替换只在WPF中有效,而不是WinForms,因为前者有自己的绘图引擎,而WinForms只使用Windows标准控件。@ckuri它可以工作。您可以使用我上面提到的一种区域性尝试OP提供的代码。这是一个
StringFormat
函数,使用
Graphics.DrawString()
绘制字符串。WinForms控件在这里甚至不涉及。@Jimi据我所知,所有语言都存在这个问题。这包括了整个MSDN示例,我还尝试了其他几个示例。适用于Windows 7:)(这是系统特定的设置,对吗?)在Windows 10中,区域/格式设置=>
标准数字和
使用本机数字是有原因的。请看:在和(来自迈克尔·卡普兰的博客)。另外,请参阅有关Uniscribe的文档。