DataGridView でセルが選択された時のイベントについて

解決


fumofumo  2009-05-22 00:08:58  No: 141958

VB2005 Xp(SP3) Oracle 9i

DataGridView でセルを選択したら、選択したセルの値(数値のみ)を
合計してテキストに表示したいのですが、セルを選択した時に
発生するイベントがわからないのでご教授ねがいます。

エクセルでセルを選択したらセルの合計値が画面右下に表示される
ようなイメージです。

よろしくお願い致します。


魔界の仮面弁士  2009-05-22 00:38:59  No: 141959

DataGridView のイベントそれぞれに、
  ListBox1.Items.Add("イベント名")
を挿入しておけば、「選択時に発生するイベント」がどれであるか推測できますよね。

その上で、ヘルプでイベントの解説を見てみれば答えに辿りつけるかと思います。
それでも分からなかったら、再度質問してみてください。


fumofumo  2009-05-22 18:23:27  No: 141960

魔界の仮面弁士さん
アドバイスありがとうございます。
アドバイス通り調べてみます。


fumofumo  2009-05-27 02:54:17  No: 141961

魔界の仮面弁士さん

アドバイス通りで質問内容が出来ました。

SelectionChanged イベントを使用して

Dim W_Suryo As Double = 0
AZ.Value = 0    ←数値型のテキスト
For Each c As DataGridViewCell In DataGridView2.SelectedCells
    If Double.TryParse(DataGridView2(c.ColumnIndex,
                      c.RowIndex).Value, W_Suryo) = True Then
        W_Suryo = AZ.Value
        AZ.Value = W_Suryo + DataGridView2(c.ColumnIndex,
                                c.RowIndex).Value
    End If
Next c

こんな感じで実現しました。

ありがとうございました。


魔界の仮面弁士  2009-05-27 03:13:23  No: 141962

本題である「SelectionChanged イベント」に辿りつけたようですね。

ところで、合計の出し方に無駄がある気がします。

まず、セルの値は、c.Value から取得できますので、
DataGridView2(c.ColumnIndex, c.RowIndex).Value を
使う必要はありません。

また、Double.TryParse を行うと、W_Suryo にセルの値が入りますが、
その使い方が適切では無いかと思います。

と言う事で別案。

Dim total As Double = 0.0
For Each c As DataGridViewCell In DataGridView2.SelectedCells
    Dim W_Suryo As Double
    If Double.TryParse(CStr(c.Value), W_Suryo) Then
        total += W_Suryo
    End If
Next
'Label1.Text = total.ToString("#,0")
AZ.Value = total


fumofumo  2009-05-27 17:31:01  No: 141963

魔界の仮面弁士さん
返信ありがとうございます。

おっしゃる通り合計の出し方に無駄がありますね^^;

別案でいきます。

最適なサンプルコードありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加