数字分组符号混乱数字格式

时间:2017-10-26 14:03:43

标签: c# winforms string-formatting

我有一个WinForms应用程序,我有一个标签,我绑定一个小数。我还为绑定添加了一个.Format方法。像这样:

// Add data binding for the lavel
Binding bindWithFormat = new Binding("Text", viewModel, nameof(viewModel.BindingNumber));
bindWithFormat .Format += viewModel.FormatAsNumber;
lblNumber.DataBindings.Add(bindWithFormat);

// Formatting function
public void FormatAsNumber(object sender, ConvertEventArgs e)
{
    // The method converts only to string type. Test this using the DesiredType.
    if (e.DesiredType != typeof(string)) return;

    // Formats the value with thousand separator and zero decimals
    e.Value = String.Format("{0:N0}", e.Value);
}

这在正常情况下工作正常,但如果我选择特定类型的数字分组符号,它看起来像这样(它应该显示“15 000 000”):

Error when formatting number

我首先想到的是当我使用空格(" ")作为符号时,但是当我明确键入空格时,它会按预期显示它。但是,我可以在区域设置中选择另一个符号,它看起来像一个空格,但在选中时会导致上述格式错误(与我明确键入空格时不同):

"Pseudo space" symbol in regional settings

到底发生了什么事?根据{{​​3}},符号为“ this website ”(U + 00A0)。所以这是一个空间。但不是空间。由于某种原因,它严重扰乱了格式化。怎么办?

奖励信息:在玩了一些之后,它似乎只会影响我使用的特定字体(它只存在于我公司)。如果我将字体更改为例如Segoe UI,然后问题就消失了。

0 个答案:

没有答案