2011-06-23 25 views
2

値を整列しようとしています。 これが起こる理由は、私は疑問に思う:文字列フォーマット

 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"); 

     MessageBox.Show(value); 

私は前の値をチェックすると、私は「MessageBox.Show(やる)それは正しいある結果は次のとおりです。

value  value 
val  value 

彼らはされるべきですしかし、私がMessageBox.show()を実行すると、次のようになります。

value  value 
    val  value 

私は本当にうまくいきませんそれがshow()で文字列を変更する理由を教えてください。私は "値"を印刷しようとしているときに同じことが起こります。

Btw:これは単なるテストコードなので、実際のコードで問題があることを理解できます。 MessageBox.Showで使用されるフォントは、固定幅を持っていないためだ

答えて

3

これは、各文字がかかることを意味し、メッセージボックスで使用するフォントがmonospacedないという事実が原因である可能性があり同じ量の水平スペース。 Visual Studioデバッガで使用しているフォントがおそらくあります。そのため、パディングは完全に違って見えます。

スペースの代わりにタブを使用してフォーマットすると、より良い結果が得られます。

+0

プリンタにテキストを印刷するときに\ t使用しないでください – syncis

3

...

+0

私はそれをプリンタに印刷するのと同じだと思いますか?固定幅ではない? – syncis

+0

はい、もちろん使用しているフォントによって異なります –

0

thisによれば、行く方法は\tを列セパレータとして使用しています。

これは間違いなく、各単一列のすべての単語の長さをチェックすることを含みます。このようにして、単一の\tを使用するのか、\t\tをダブル使用するのかを知ることができます。

+0

プリンタにテキストを印刷するときに\ t使用しないようです。 – syncis

+0

@syncis申し訳ありませんが、私も支払ったようですほとんど注意。あなたの唯一の仕事は、MessageBox.Show()を使って上記のメソッドを使って値を表示することだと思いました。あなたのケースでは、[ここに記載されている]独自のメッセージボックス(http://stackoverflow.com/questions/232066/messagebox-show-font-change/232077#232077)を作成しようとするかもしれません。次に、印刷目的でも使用できる非固定幅のフォントに切り替えることができます。 –

関連する問題