
テキストボックスに数値しか入力させないようにし、さらにそれを3桁のコンマ区切りで表示しています。
以下の文でやっています。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < '0' || '9' < e.KeyChar) && e.KeyChar != '\b' )
{
e.Handled = true;
}
}
private void textBox1_Leave(object sender, EventArgs e)
{
this.textBox1.Text = string.Format("{0:#,0}", ulong.Parse(this.textBox1.Text));
}
上の方では数値のみの入力制限、下の方では桁区切りを実行しています。
これでうまくいくのですが、エラーが一つ出ます。
一度数字を入力し、リーブしたらもう桁区切りがなされます。
しかしそれを書き換える、例えば全部消してから書き換えるのでなく、桁数が一文字多かったので消そうというときに、一つ消してリーブすると、コンマが入っているためにエラーになります。
これを防ぐにはどうすればいいでしょうか?
また、ただそれだけでは、桁区切りがおかしくなるはずです。
できれば書き換えた後に、新たに桁区切りがなされるようにしたいのですがやはり難しいでしょうか?
No.3ベストアンサー
- 回答日時:
Parseメソッドの NumberStyles付に変更すればいいですよ
this.textBox1.Text = string.Format("{0,#0}",ulong.Parse(this.textBox1.Text, System.Globalization.NumberStyle.Number));
といった具合です
Windowsの桁区切りが『,』であれば 上記でうまくいくと思います
No.4
- 回答日時:
#3です
私の回答のFormatの書式を間違えてますね …
正しくは質問の通り "{0:#,0}" です
空欄の件ですが、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));
}
}
こういった感じで。
解決できました。本当にありがとうございました。
No.2
- 回答日時:
Replaceメソッド辺りで取り除く…ってところでしょうかね?
http://msdn.microsoft.com/ja-jp/library/czx8s9ts …
Removeメソッドの方がソレっぽいのですが、こちらはインデックスとか使いますし。
# まぁ、演算すりゃいいだけですが。
ところで…this.textBox1.Textが空になった時のコトも考慮しておいた方がいいでしょうね。
# 上記のReplaceメソッドで取り除いた後の長さも…かな。"1,000"かせ取り除いても空にはなりませんが。
ご回答ありがとうございました。やり方は、No.3さんの方法でうまくいきました。ただこの場合も空欄の場合の処理を考えなければなりません。
考えてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
データグリッド内の数値をカンマ区切りで表示
Visual Basic(VBA)
-
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
-
4
C#プログラムで、ボタンをショートカットキー付きで作りたいのですが、方
その他(プログラミング・Web制作)
-
5
DataGridView 列ごとの入力制限
Visual Basic(VBA)
-
6
C#でボタンクリックをキャンセル
C言語・C++・C#
-
7
C#のループでtextboxに値を入れる方法
C言語・C++・C#
-
8
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
9
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
10
c#でTextBoxの入力制限
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで数値を全角文字(カ...
-
CSVファイルの中で、「 , 」カ...
-
WORDで改ページすると時々グレ...
-
【VBA】エクセルで値のみクリッ...
-
データにカンマが入ったCSVデー...
-
マクロを使ってフォルダー内に...
-
JPY ¥1,500.00は日本円でお幾ら?
-
[VBA][Excel]クリップボードか...
-
カンマ区切りの数字をCSVフ...
-
CSVの定義
-
3桁ごと?4桁ごと?コンマの...
-
EXCELからCSVにすると余計なカ...
-
エクセルにペーストする際にカ...
-
メモ帳からエクセルにセル区切...
-
テキストファイルからReadLine...
-
エクセルの区切り位置の設定方法
-
VB2005のTextBoxでカン...
-
PHP カンマをエスケープしたい...
-
ひとつの命令を複数行に記述
-
文字コードの%E3%80%とは何です...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
何故、日本は未だに数字を3桁...
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
Excelについて質問です。 セル...
-
WORDで改ページすると時々グレ...
-
エクセルにペーストする際にカ...
-
CSVの定義
-
マクロを使ってフォルダー内に...
-
カンマ区切りの数字をCSVフ...
-
データにカンマが入ったCSVデー...
-
[VBA][Excel]クリップボードか...
-
JPY ¥1,500.00は日本円でお幾ら?
-
エクセル:桁区切り「カンマ」...
-
3桁ごと?4桁ごと?コンマの...
-
EXCELの文字が指数になる
-
数字が全角、コンマなし
-
カンマ区切りでないテキストをc...
-
エクセルの区切り位置の設定方法
-
Excel 住所の分割(文字数制限...
おすすめ情報