- PR -

【DataGrid】セルのカンマ編集について

1
投稿者投稿内容
masima
会議室デビュー日: 2003/08/05
投稿数: 7
投稿日時: 2003-10-09 21:36
いつもお世話になっております。DataGridでのセル編集処理について質問です。
DataGridのセルに対して数値入力する場合に、
・入力時カンマ無し
・表示時カンマ有り
を実現しようと考えております。
DataGridTextBoxColumn.Formatに"#,##0"と定義したのですが、カンマ編集されませんでした。
そこで、DataGridTextBoxColumnのTextBoxプロパティのEnter、Leaveイベントを取得し、それぞれに処理を記述する方法を検討しました。
コード:
Sub Form1_Load(...) ...
    Dim ts As DataGridTableStyle = Me.DataGrid1.TableStyles(0)
    Dim cs As DataGridTextBoxColumn
    cs = CType(ts.GridColumnStyles(0), DataGridTextBoxColumn)
    Dim tb As TextBox = cs.TextBox

    AddHandler tb.Enter, AddressOf tb_Enter
    AddHandler tb.Leave, AddressOf tb_Leave
End Sub

Private Sub tb_Enter(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim tb As TextBox = CType(sender, TextBox)
    tb.Text = VB6.Format(tb.Text, "###0")
End Sub

Private Sub tb_Leave(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim tb As TextBox = CType(sender, TextBox)
    tb.Text = VB6.Format(tb.Text, "#,##0")
End Sub


実行したところ、イベントの取得は出来ており、Format関数の戻り値も問題ないのですが、セルの値は変化しませんでした。
そこで以下の対策を試みたのですが、いずれもうまくいきませんでした。
・引数senderをByRefにしたところ、AddHandlerの記述部で、
「tb_EnterにデリゲートEventHanlderと同じシグニチャがありません」
というエラーになる。
・tb_LeaveでDataGridのカレントセルに対して編集処理を行なったが、フォーカス移動後のセルに編集結果が表示されてしまう。
コード:
  With DataGrid1
    .Item(.CurrentCell.RowNumber, .CurrentCell.ColumnNumber) = VB6.Format(tb.Text, "#,##0")
  End With


上記問題の解決方法、またはDataGridでのカンマ編集についてよい方法をご存知の方がいらっしゃいましたら是非ご教授ください。
よろしくお願いいたします。
Mr.タナカ
ベテラン
会議室デビュー日: 2003/03/15
投稿数: 64
投稿日時: 2003-10-11 04:26
こんにちは。
スレッド見ました。

カンマ区切りですが、Textは多分文字型ですよね?
一度、数値型に変換してからFormatを使ってみては、どうでしょうか?
VB6.Format(tb.Text, "#,##0")→VB6.Format(CType(tb.Text,long), "#,##0")
過去にFormatの件で、同じような事があった気がします。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=4608&forum=7

またDataGrid表示でのカンマ区切りですが、これはDataGridの「ItemDataBound」イベント中に、同じようなFormat関数を使用してみては、どうでしょうか?

余談ですが、.NETではFormatの代わりに.Tostringを使用するみたいですね...
私も最近、FormatからTostringに変えました。


[ メッセージ編集済み 編集者: Mr.タナカ 編集日時 2003-10-11 04:26 ]

[ メッセージ編集済み 編集者: Mr.タナカ 編集日時 2003-10-11 04:33 ]

[ メッセージ編集済み 編集者: Mr.タナカ 編集日時 2003-10-11 04:35 ]
べーちゃん
大ベテラン
会議室デビュー日: 2002/07/21
投稿数: 121
投稿日時: 2003-10-13 07:37
テンプレートカラムを使えば元々編集用のコントロールと参照用のコントロールを
別々に指定できるため、簡単に実現できますよ。

------
って、よく見たらWindowsプロジェクトですね。
失礼しました。

[ メッセージ編集済み 編集者: べーちゃん 編集日時 2003-10-13 07:41 ]
1

スキルアップ/キャリアアップ(JOB@IT)