• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#で、テキストボックスの入力について。)

C#でテキストボックスの入力を制限と桁区切りする方法

このQ&Aのポイント
  • C#のテキストボックスに数値のみを入力させる方法と、3桁ごとにコンマ区切りで表示する方法についてご質問です。
  • 入力制限については、KeyPressイベントを使用して入力文字が数値かどうかを判別し、そうでない場合は入力を無効化するようにします。
  • また、桁区切り表示については、テキストボックスのLeaveイベントを使用して文字列をパースしてコンマ区切りの形式に変換します。ただし、一部の操作でエラーが発生する可能性があるため、それを防ぐ方法についても考える必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

Parseメソッドの NumberStyles付に変更すればいいですよ this.textBox1.Text = string.Format("{0,#0}",ulong.Parse(this.textBox1.Text, System.Globalization.NumberStyle.Number)); といった具合です Windowsの桁区切りが『,』であれば 上記でうまくいくと思います

inmotion107
質問者

お礼

ご回答ありがとうございました。すごいです、思っていた通りになりました。あとは空欄の場合の処理ですね。考えてみようと思います。

その他の回答 (3)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.4

#3です 私の回答のFormatの書式を間違えてますね … 正しくは質問の通り "{0:#,0}" です

inmotion107
質問者

お礼

空欄の件ですが、if文で分ければ簡単に解決できました。 private void textBox1_Leave(object sender, EventArgs e) { if(this.textBox1=="";) { } else { this.textBox1.Text = string.Format("{0:#,0}", ulong.Parse(this.textBox1.Text)); } } こういった感じで。 解決できました。本当にありがとうございました。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

Replaceメソッド辺りで取り除く…ってところでしょうかね? http://msdn.microsoft.com/ja-jp/library/czx8s9ts%28v=vs.110%29.aspx Removeメソッドの方がソレっぽいのですが、こちらはインデックスとか使いますし。 # まぁ、演算すりゃいいだけですが。 ところで…this.textBox1.Textが空になった時のコトも考慮しておいた方がいいでしょうね。 # 上記のReplaceメソッドで取り除いた後の長さも…かな。"1,000"かせ取り除いても空にはなりませんが。

inmotion107
質問者

お礼

ご回答ありがとうございました。やり方は、No.3さんの方法でうまくいきました。ただこの場合も空欄の場合の処理を考えなければなりません。 考えてみます。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

テキストボックスに書かれてる文字列をそのままパースしようとするからエラーになるわけで、カンマを取り除いてパースすればいいのでは。

inmotion107
質問者

お礼

ご回答ありがとうございました。取り除いてからという方法も確かにありそうですね。しかし、No.3さんのご回答でうまくいきました。

関連するQ&A

専門家に質問してみよう