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

わんくま同盟

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

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


(過去ログ 93 を表示中)
■55446 / )  Re[9]: DataGridViewの内容を使ってグラフの作成をするには
□投稿者/ 魔界の仮面弁士 (1969回)-(2010/12/02(Thu) 13:51:03)
No55444 (daibo さん) に返信
> x = (double)dataGridView1.Rows[i].Cells[1].Value;
> の部分で、'System.InvalidCastException'のハンドルされていない例外が発生しました。

まず、Value プロパティは object 型ですよね。
そのオブジェクトの中身を double 型にキャストできなかったというエラーかと。

MessageBox.Show( dataGridView1.Rows[i].Cells[1].Value.GetType().FullName );
などとして、元の型を確認してみてください。

下記の【第7章 キャストとデータ変換】あたり。
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html


----------------------------------------
object o1 = 1.23D;      // Double 型(double)
object o2 = 1.23F;      // Single 型(float)
object o3 = 123;        // Int32 型(int)
object o4 = "1.23";     // String 型(string)

double x;

// Double 値なのでキャスト成功
x = (Double)o1;

// Double では無いのでキャストできない
x = (Double)o2;     // 例外:InvalidCastException(実行時エラー)
x = (Double)o3;     // 例外:InvalidCastException(実行時エラー)
x = (Double)o4;     // 例外:InvalidCastException(実行時エラー)

// 元の型にキャストしてから代入する場合
x = (Double)(Single)o2;     // Single → Double への拡大変換はOK
x = (Double)(Int32)o3;      // Int32 → Double への拡大変換はOK
// x = (Double)(string)o4;     // String → Double は変換不可(コンパイルエラー)

// 拡大変換の場合は暗黙変換可能
x = (Single)o2;     // Single 値を Double 型に入れる場合は、キャストを省略できる
x = (Int32)o3;      // Int32 値を Double 型に入れる場合は、キャストを省略できる

// String からの変換には、Parse や Convert を用いる
x = Double.Parse((string)o4);
x = Convert.ToDouble((string)o4);

返信 編集キー/


管理者用

- Child Tree -