Gar*_*del 13 c# windows-xp string-formatting windows-7
我使用以下代码在我的应用程序的状态栏中显示任务的已用时间.
public void DisplayDuration(TimeSpan duration)
{
string formattedDuration;
if (duration.TotalMilliseconds < 2000)
formattedDuration = string.Format("{0} ms", duration.TotalMilliseconds);
else if (duration.TotalSeconds < 60)
formattedDuration = string.Format("{0} sec", duration.TotalSeconds);
else
formattedDuration = string.Format("{0} min", duration.TotalMinutes);
this.TimingLabel.Text = formattedDuration;
}
Run Code Online (Sandbox Code Playgroud)
this.TimingLabel是winform页脚中statusStrip控件中的标签.
但是我在Windows XP和Windows 7上得到了完全不同的结果
Windows XP:

Windows 7的

为什么单位出现在Windows 7之前?
我已检查区域设置两台计算机都设置为美国,具有相同的日期时间格式.非常确定它是在两台机器上运行的相同代码.在一些非常简单的代码中,这是非常奇怪的行为.
作为后续跟进:我对我的代码进行了以下更改,但仍然存在同样的问题:
formattedDuration = string.Format("{0} ms", duration.TotalMilliseconds.ToString());
Run Code Online (Sandbox Code Playgroud)
我认为最有可能的是布局问题,而不是String.Format.区域设置不应该是一个因素,因为您没有要求TimeSpan格式化其值.相反,你要求String格式化字符串"ms"后跟一个数字.如果它在输出中反转它将只是一个错误.
更有可能的是,该数字是通过容器布局约束中的错误进行修剪的.如果我在屏幕截图上看起来非常努力,那么ms字符串左边似乎会有一个分隔线.
尝试给所有东西一个相当大的固定宽度,看看是否有正确的显示.
| 归档时间: |
|
| 查看次数: |
765 次 |
| 最近记录: |