我有一个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”):
我首先想到的是当我使用空格(" "
)作为符号时,但是当我明确键入空格时,它会按预期显示它。但是,我可以在区域设置中选择另一个符号,它看起来像一个空格,但在选中时会导致上述格式错误(与我明确键入空格时不同):
到底发生了什么事?根据{{3}},符号为“ this website ”(U + 00A0)。所以这是一个空间。但不是空间。由于某种原因,它严重扰乱了格式化。怎么办?
奖励信息:在玩了一些之后,它似乎只会影响我使用的特定字体(它只存在于我公司)。如果我将字体更改为例如Segoe UI,然后问题就消失了。