C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 93 を表示中)
■55439 / )  Re[4]: DataGridViewの内容を使ってグラフの作成をするには
□投稿者/ daibo (8回)-(2010/12/02(Thu) 11:31:05)
No55437 (ごう さん) に返信
> ■No55436 (daibo さん) に返信
> >>私なら、DataTableをそのまま使っちゃいます。
>>とありますが、どのような記述をすればよいでしょうか?
>>csvファイルの2列目が時間、4列目が乱数で構成されていてそれを2次元配列にしてfor文に組み込みたいのですが、記述が分からないので
>>できればご教授して頂きたく思います。
> 
> 時間がないのでヒントだけ。
> 
> DataTableの値の参照の仕方について。
> データテーブル.Rows[行番号][列番号または列名] といった書き方で取り出せます。
> 
> DataGridViewなら
> dataGridView1.Rows[行番号].Cells[列番号または列名].Value で取り出せます。
> 
>>2.折れ線グラフで1本作りたいです。
> PointPairListはいくついると思いますか?
> 
>>3.グラフの縦軸は適当な乱数です。
>>4.グラフの横軸は時間です。
> 
> list1.Add(x, y)のxが横軸の数値、yが縦軸の数値です。
> 何を代入していけばいいかわかりますか?
> 
> 
何かとありがとうございます。
現在ご指摘を元に以下のようにソースコードを一部書き直しました。
      double x, y1, y2;
            PointPairList list1 = new PointPairList();
            PointPairList list2 = new PointPairList();
            for (int i = 0; i < 36; i++)
            {
                x = (double)i + 5;
                y1 = 1.5 + Math.Sin((double)i * 0.2);
                y2 = 3.0 * (1.5 + Math.Sin((double)i * 0.2));
                list1.Add(x, y1);
                list2.Add(x, y2);
            }
↓↓↓↓↓↓↓↓↓↓↓↓↓
      int i;
            double x,y;
            PointPairList list = new PointPairList();
            for(i = 0; i <= dataGridView1.Rows.Count; i++)
            {
               x = (double)dataGridView1.Rows[i+2].Cells[1].Value;
               y = (double)dataGridView1.Rows[i+2].Cells[3].Value;
               list.Add(x,y);
            }

このようにしてビルドしてみたところ、エラーはなかったのですが、実行してみると

追加情報:インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。

と出ます。csvファイルの中に負の数があるのがいけないのか、はたまた上記の全体のソースコードの中で不備があるのか分かりません。
この例外の解決法が分かる方いましたらご教授して頂きたく思います。よろしくお願いします。

返信 編集キー/


管理者用

- Child Tree -