
テキストボックスに数値しか入力させないようにし、さらにそれを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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Excel(エクセル) Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい 3 2022/04/11 13:53
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- その他(プログラミング・Web制作) ボールの動きがスムーズに動いてかつ目盛り線描画を維持するためには 4 2023/05/31 10:01
このQ&Aを見た人はこんなQ&Aも見ています
-
ラジオボタンの初期指定
Visual Basic(VBA)
-
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
-
4
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
5
VB.NETのテキストボックスの書式指定
Visual Basic(VBA)
-
6
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
7
C#でテンキーの操作は可能でしょうか?
C言語・C++・C#
-
8
C#のループでtextboxに値を入れる方法
C言語・C++・C#
-
9
visualstudio C# テキストボックスの数値を取得して計算する方法を教えてください。
Microsoft ASP
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
Excelについて質問です。 セル...
-
エクセルで数値を全角文字(カ...
-
CSVの定義
-
WORDで改ページすると時々グレ...
-
EXCELからCSVにすると余計なカ...
-
エクセルにペーストする際にカ...
-
「カンマ」と「コンマ」は同じ...
-
パス区切りの文字について
-
マクロを使ってフォルダー内に...
-
C#でcsvファイルの列を入れ替え...
-
メッセージボックスの数字をカ...
-
何故、日本は未だに数字を3桁...
-
データグリッド内の数値をカン...
-
セパレータ文字の意味を教えて...
-
エクセル セルの書式設定 ユ...
-
C#で、テキストボックスの入力...
-
PHP カンマをエスケープしたい...
-
(エクセル)特定のスペースを...
-
[VBA][Excel]クリップボードか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
マクロを使ってフォルダー内に...
-
EXCELからCSVにすると余計なカ...
-
Excelについて質問です。 セル...
-
CSVの定義
-
[VBA][Excel]クリップボードか...
-
WORDで改ページすると時々グレ...
-
カンマ区切りの数字をCSVフ...
-
C#で、テキストボックスの入力...
-
データにカンマが入ったCSVデー...
-
VBAでtxtファイルを読み込む際...
-
カンマ区切り
-
VB2005のTextBoxでカン...
-
メモ帳からエクセルにセル区切...
-
JPY ¥1,500.00は日本円でお幾ら?
-
テキストファイルからReadLine...
-
カンマ区切りでないテキストをc...
-
エクセルにペーストする際にカ...
-
パス区切りの文字について
おすすめ情報