【发布时间】:2021-07-04 03:43:18
【问题描述】:
我正在尝试以计算机设置的语言显示一列数字。
获取一些示例代码...
public Form1()
{
InitializeComponent();
Paint += Form1_Paint;
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Font font = new Font("Calibri", 12.0f);
decimal amount = 12345.67m;
e.Graphics.DrawString(amount.ToString("N", CultureInfo.CurrentCulture), font, new SolidBrush(Color.Black), 10.0f, 10.0f);
}
我运行它,不出所料,我看到“12,345.67”
如果我将计算机设置为非拉丁语言(例如孟加拉语),我会得到完全相同的输出,而我希望看到它转换为该语言的数字。
将数字推入工具提示、编辑框等,数字按预期显示为 Windows 已设置的语言,所以我怀疑这与 Graphics 对象有关。
谁能指出我做错了什么的正确方向?
编辑:
我希望看到类似下面的模型...
编辑 2
将计算机设置为孟加拉语并修改代码(刚刚作为字符串输入的数字)...
当我运行程序时,我仍然得到原始输出(仅限英文数字)。
【问题讨论】:
-
它与
Graphics没有任何关系它必须与decimal.ToString有关,因为一旦你调用它,你所拥有的只是一个@987654331 @,证明dotnetfiddle.net/WEwjz2 -
@Charlieface 但是如果你用非英语语言运行它,那么字符串肯定也是非英语的吗?
-
您不需要每次绘制表单时都需要一个新的字体对象 - 它会导致您的应用程序严重泄漏。制作一个并重复使用它
-
不确定你的意思:请告诉我
numbers show as expected for the language应该是什么样子。请记住,这里的大多数人不会说或读孟加拉语 -
@Ňɏssa Pøngjǣrdenlarp 这只是一个快速模拟示例。我的真实代码写得更好。