2011-06-23 145 views
1

我想對齊值。我想知道爲什麼會發生這種情況:字符串格式化和打印

 string value = ""; 

     value += string.Format("{0,-10}", "value"); 
     value += string.Format("{0,5}", "value"); 

     value += Environment.NewLine; 

     value += string.Format("{0,-8}", "val"); 
     value += string.Format("{0,7}", "value"); 

     Print(value); 

如果我檢查值之前「打印」它是正確的。其結果是:

value  value 
val  value 

,因爲他們應該是,但是當我打印的「價值」我的打印機,然後他們得到這樣的:

value  value 
    val  value 

我真的不能明白爲什麼它改變了字符串時,我打印文本?

我試圖使用「\ t」,但我的打印機似乎不明白「\ t」,因爲這些標籤沒有打印出來。

順便說一句:這只是一個測試代碼,所以你可以理解我與真正的代碼有問題。

+0

確定您打印的是等寬字體? –

回答

2

您的控制檯使用固定寬度的字體,其中您的打印機沒有(至少默認情況下)。因此,打印機佔用的空間較少,而且字母會根據其實際寬度佔用更多或更少的空間。

2

這可能是由使用不同字符寬度的字體引起的。在非固定寬度的字體中,空格通常比字母和數字窄,所以看起來空格可能會丟失。考慮使用Lucida Console或其他固定寬度的字體。

+0

你的意思是我應該在打印機上更改我的字體? – syncis

+0

@syncis,可能工作。這取決於你如何印刷。你是否在使用類似於FlowDocument的東西?如果是這樣,請更改文檔上的字體。 –