質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

11502閲覧

[C#]データグリッドビューの縦の計算

reeeo

総合スコア42

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2017/09/27 00:57

編集2017/09/27 01:41

現在VisualStudio2015で月の家計簿を作成しています。
データグリットビューに日ごとの出金額の合計を表示しています。
やりたいことは、データグリッドビューの枠外に月の合計出金額を表示したいと思っています。
ですが、下記の通り実行したところ、Value()の箇所で「実行不可能なメンバー」と出てしまいました。
やはりループの書き方から間違っているのでしょうか?
データグリッドビューは以下のような表示になっています。
よろしくお願いします。

private void sum() { int goukei=0; int cnt = sumDgv.Rows.Count; for(int i=0; i>=cnt ; i++) { goukei += sumDgv.Rows[i].Cells[2].Value(); } textBox1.Text = goukei.ToString(); }
日付入金額出金額
2017/9/2501000
2017/9/2602000
2017/9/2703000

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2017/09/27 01:04

何がわからないんですか?ループの仕方ですか?データグリッドビューからのデータの取り出し方ですか?足し算ですか?変数の使い方ですか?
reeeo

2017/09/27 01:44 編集

質問文、修正しました。よろしくお願いします。
guest

回答2

0

ベストアンサー

DataGridViewCell.Value はメソッドではなくプロパティなので、.Value() ではなく .Value と記述します。
また、同プロパティは object なので、そのままだと計算できないかもしれません。
intにキャストするか、あるいは int でない形式で格納されているなら int.Parse なり int.TryParse なりで int に変換しましょう。

それと、for ループの条件が間違っているような?
i>=cnt だとループ内の処理が1回も実行されないように思えます。

csharp

1private void sum() 2{ 3 int goukei = 0; 4 int cnt = sumDgv.Rows.Count; 5 6 for (int i = 0; i < cnt; i++) 7 { 8 goukei += (int)(sumDgv.Rows[i].Cells[2].Value); // int.Parseが必要かも? 9 } 10 textBox1.Text = goukei.ToString(); 11}

参考:
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.datagridviewcell.value(v=vs.110).aspx

投稿2017/09/27 01:54

alg

総合スコア2019

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reeeo

2017/09/27 02:00

回答ありがとうございます。 不等号の向き逆にしていました。 algさんに教えていただいた通りにやってみたのですが、インデックスが範囲を超えています。とエラーが出てしまいました。
alg

2017/09/27 02:03

sumDgv.Rows[i].Cells[2] の Rows[i] で同エラーが起きたのか、Cells[2] で起きたのか、どちらでしょう? あるいは、どちらでもない別の箇所でしょうか?
reeeo

2017/09/27 02:07

3 回目で上手くループを抜けてなくてエラーになっているのでおそらくRows[i]で起きているのだと思います。
reeeo

2017/09/27 02:12

すいません。cnt-1でできました!
alg

2017/09/27 02:15

ああ、Rowsの最後は新規行だったんですかね。それだとi<cntではうまく値が取れないかもしれません。
guest

0

よくわからんけど、これでいいのでは?

goukei += sumDgv.Rows[i].Cells[2].Value;

LINQで書くとこれで終了かな?

int goukei = sumDgv.Rows.select(n=> (int)n.Cells[2].Value).Sum()

投稿2017/09/27 01:54

編集2017/09/27 01:59
kiichi54321

総合スコア1984

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reeeo

2017/09/27 02:04

回答ありがとうございます。 LINQで書くとselectの箇所で定義が含まれてないとエラーが出てしまいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問