■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 -