Visual Basic .NET2003を使っています。

DataGridのセルを、カンマ区切りの数字にしたいと思い、フォーマット指定をしました。
DataGridTextBoxColumn.Format= "#,#"

表示はうまくいっているのですが、手で値を入力する際、カンマを入れると「数値でない」と見なされ、はじかれてしまいます。
カンマ区切りの数値を入力可能にするにはどのようにすればよいでしょうか。

回答の条件
  • 1人5回まで
  • 登録:2006/03/27 13:46:34
  • 終了:2006/04/03 13:50:03

回答(1件)

id:kaorun No.1

kaorun回答回数44ベストアンサー獲得回数102006/03/27 14:48:09

ポイント57pt

DataGridとの結合にDataBindingsを使っているのであれば、Parseイベントを処理し、自前で文字列→数値変換をしてやることでとりあえず対処できると思います。

http://msdn2.microsoft.com/ja-JP/library/system.windows.form...

もう少しスマートな方法があるかも知れませんが...。

DataBindingsに関してはMSDNやWebにも資料が少ないので、

ステップバイステップで学ぶMicrosoft ADO.NET

をお勧めします。

id:golbeza

ご回答ありがとうございます。

やはり自力でやるしかないのですか・・・でも表示できるものが(自力でイベントハンドラ設定して処理しないと)入力できないっておかしいですよね! なぜこんな仕様なのか理解に苦しみます・・・

2006/03/28 23:07:40
  • id:kaorun
    不親切な仕様のように思えるかも知れませんが、出力系と入力系の機能が必ずしも一対一で対応して作られているわけではありません。
    入力系は、ユーザーの入力方法によって書式が大きく揺らぎますから、全角半角やスペースへの対応、その他の無関係な文字の排除、さらには各国語対応で欧州向けに,と.を入れ替えるなど、その処理は膨大で、例えばExcelのようになんでも入力できる機能をFrameworkに実装するのは極めて非効率、ということになり、このように出力系だけの対応、ということも十分にあり得ます。

    実際、カンマ区切りの数値文字列はFormat()メソッドなどで簡単に出力できると思いますが、これに対応したParse()メソッドないはずです(あったらすいません...)。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません