2011-12-27 11 views
3

こんにちは私はテキストボックスに入力されたテキストを丸めるプログラムをやっています。私はこれを試みたが、私のためテキストボックスのテキスト値をどのようにフォーマットできますか?

private void textBox1_Leave(object sender, EventArgs e) 
{ 
    string str = string.Format(textBox1.Text, "##.00"); 
    textBox1.Text = str; 
} 

を動作しませんでしたtextBox1_Leaveイベント

に私のテキストボックスの値をフォーマットしたいと思います。このようサンプル入力

Entered value  output value 
    100    100.00 
    50     50.00 

は、いずれかが私を助けることができる

+0

最初に、例で実際に丸めを表示していません。あなたはどういう意味ですか*「それは私にとってはうまくいかない」* – Yuck

+0

「うまくいきません」と言ったらどういう意味ですか? –

+0

期待した結果が得られません – Chaitanya

答えて

6

この文字列を数字のに変換してからコールフォーマットに変換する必要があります。また、フォーマットを間違って使用していました。あなたは、非数値の入力に入れた場合、これは吐くだろう当然

string str = String.Format("{0:F2}", Double.Parse(textBox1.Text)); 
textBox1.Text = str; 

この

のように、プレースホルダを使用する必要があります。これを可能にするには、基本的な検証を行うことができます。

double d = 0;    
textBox1.Text = 
     Double.TryParse(textBox1.Text, out d) ? String.Format("{0:F2}", d) : "0"; 
+0

ToString()はそのように呼び出せますか?テキストはstype文字列であり、ToStringはFormatproviderのみを受け入れます。私はあなたがDoubleに変換する必要があると思うか、フォーマットストリングを受け入れるToStringのオーバーロードを持っているものがあると思います。 – rene

+0

私のために働かなかった – Chaitanya

+0

@rene - 私はそれをテストするまで確信していました。 - それは今修正されました –

3

問題は、テキストボックスの値がすでに文字列であることです。これを試してみてください:

private void textBox1_Leave(object sender, EventArgs e) 
{ 
    var input = Convert.ToDouble(textbox1.Text); 
    textBox1.Text = input.Tostring("#.00"); 
} 

注:入力が数字でない場合は、変換でフォーマット例外をキャッチしたいと思うでしょう。

関連する問題