【发布时间】:2012-02-04 08:28:25
【问题描述】:
我正在使用以下代码在我的应用程序的状态栏中显示任务的经过时间。
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;
}
this.TimingLabel 是 winform 页脚 statusStrip 控件中的一个标签。
但我在 Windows XP 和 Windows 7 上得到完全不同的结果
Windows XP:
Windows 7
为什么单位在 Windows 7 中出现在时间之前?
我检查了区域设置,两台机器都设置为美国,日期时间格式相同。确保它是在两台机器上运行的相同代码。 在一些非常简单的代码中,这是非常奇怪的行为。
作为跟进:我对我的代码进行了以下更改,但仍然遇到同样的问题:
formattedDuration = string.Format("{0} ms", duration.TotalMilliseconds.ToString());
【问题讨论】:
-
你确定相同的代码在两个操作系统上运行吗?
-
每个系统的“小数点后位数”的“数字”附加设置是什么?
-
我要在这里冒个险,我猜你没有向我们展示将文本分配给
TimingLabel所涉及的所有代码。 -
您使用的是哪个版本的 .NET?是否有可能您已经为 3.5 编译并且一台机器具有 .NET 4 而另一台机器没有?尝试使用您的应用配置文件强制运行时。
-
绝对是的!这是我检查的第一件事。 Windows XP 映像取自开发机器,Windows 7 映像取自我安装应用程序的测试机器。
标签: c# windows-7 windows-xp string-formatting