Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# statusstrip标签中的String.format()值在Win 7和Win XP上的显示方式不同_C#_Windows 7_Windows Xp_String Formatting - Fatal编程技术网

C# statusstrip标签中的String.format()值在Win 7和Win XP上的显示方式不同

C# statusstrip标签中的String.format()值在Win 7和Win XP上的显示方式不同,c#,windows-7,windows-xp,string-formatting,C#,Windows 7,Windows Xp,String Formatting,我使用以下代码在我的应用程序的状态栏中显示任务的运行时间 public void DisplayDuration(TimeSpan duration) { string formattedDuration; if (duration.TotalMilliseconds < 2000) formattedDuration = string.Format("{0} ms", duration.TotalMilliseconds); else if (d

我使用以下代码在我的应用程序的状态栏中显示任务的运行时间

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;
}

我认为最有可能的问题是布局问题,而不是
String.Format
。区域设置不应成为此处的一个因素,因为您没有要求
TimeSpan
设置其值的格式。相反,您要求
String
格式化一个字符串“ms”,后跟一个数字。如果它在输出中反转它们,那将只是一个bug

更有可能的是,这个数字是通过容器的布局约束中的一个bug被截取的。如果我仔细看屏幕截图,
ms
字符串的左侧确实出现了一个分隔符


试着给每样东西一个相当大的固定宽度,看看是否能恢复正确的显示

实际答案是状态为RightToLeft的标签未正确设置为true。Windows XP不尊重此属性,但Windows 7+使用此属性。

您绝对确定两个操作系统上运行的代码相同吗?为“小数点后的位数”设置的“数字”附加设置是什么对于每个系统?我将在这里冒险,猜测您没有向我们展示将文本分配给
TimingLabel
所涉及的所有代码。您使用的是什么版本的.NET?是否可能您已经编译了3.5版本,一台机器有.NET4,而另一台没有?尝试使用应用程序配置文件强制运行时。绝对是!这是我检查的第一件事。Windows XP映像取自开发机器,Windows 7映像取自安装应用程序的测试机器。这是一个布局错误。当我将标签设置为固定宽度时,值的格式是正确的。@加里:那么编辑问题的标题不是很好吗?
formattedDuration = string.Format("{0} ms", duration.TotalMilliseconds.ToString());