none
DataGridViewの特定の列の合計をTextBoxに出したい RRS feed

  • 質問

  • いつもお世話になります。よろしくお願いします。

    件名のとおりなのですがDataGridViewの金額欄の合計をTextBoxに表示したいのですが、以下のコードを実行するとTextBoxが0となります。

    列は10列あり、合計を求めたい列は左から10行目です。

    Dim Amount As Decimal = 0 の「0」を「1」にすると、そのまま「1」と表示されてしまいます。

    DataGridViewは読み取り専用にしてあります。フォーム上にボタンがあり、検索条件を入れてボタンを押すとDataGridViewに該当する一覧が表示されるようになっています。イベントが違うのでしょうか?添削とアドバイスお願いします。

     Private Sub 請求BindingSource_PositionChanged _
        (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 請求BindingSource.PositionChanged
          
            Dim Amount As Decimal = 0
            Dim i As Integer
            '金額の合計を求める
            For i = 0 To 請求DataGridView.RowCount - 1
                Amount = Amount + 請求DataGridView.Rows(i).Cells(9).Value
            Next
            TextBox1.Text = Amount
        End Sub

     

    2006年10月24日 6:52

回答

  • PositionChangedは適切ではないでしょう。検索ボタンを押してもPositionChangedは発生していないか、発生していてもDataGridViewでまだ表示されていない状態なのかもしれません。デバッグ実行で確かめてみて下さい。

    今回のケースは、検索ボタンを押すというイベントがあるので、その結果生成されたデータテーブルから合計値を求め、それをTextBoxに表示されたらいかがでしょうか?

    2006年10月24日 10:27
    モデレータ

すべての返信

  • >列は10列あり、合計を求めたい列は左から10行目です ←10列目の誤りです。

     

    2006年10月24日 6:54
  • PositionChangedは適切ではないでしょう。検索ボタンを押してもPositionChangedは発生していないか、発生していてもDataGridViewでまだ表示されていない状態なのかもしれません。デバッグ実行で確かめてみて下さい。

    今回のケースは、検索ボタンを押すというイベントがあるので、その結果生成されたデータテーブルから合計値を求め、それをTextBoxに表示されたらいかがでしょうか?

    2006年10月24日 10:27
    モデレータ
  • trapemiya さま、お返事ありがとうございました。

    検索ボタンのイベント部分にコードを組み込んだらちゃんと動きました。

    この部分で半日悩んでいました。解決できてすっきりです。この度はありがとうございました。

     

    2006年10月24日 10:57