例外のトラブルシューティング : System.InvalidCastException
InvalidCastException 例外は、明示的な参照変換でエラーが発生するとスローされます。 参照変換とは、ある参照型から別の参照型への変換をいいます。 参照変換では、参照の型は変更されますが、変換対象の型や値は変更されません。 ある型から別の型にオブジェクトをキャストすると、この例外が頻繁に発生します。
関連するヒント
- 変換元と変換先の型をチェックして、変換が有効であることを確認します。
システムがサポートする変換については、Convert を参照してください。
解説
明示的な参照変換を正常に実行するには、変換元の値が Null (Visual Basic では Nothing) であるか、変換元の引数が参照するオブジェクト型を暗黙の参照変換によって変換先の型に変換できることが必要です。
カスタム イベントの呼び出しをユーザー コントロール内に含む Visual Basic 6.0 アプリケーションを新しいバージョンの Visual Basic にアップグレードして実行すると、この例外が発生し、"指定されたキャストは有効ではありません。" という追加情報が表示されることがあります。 このエラーを修正するには、 Form1 で次のコード行を見つけます。
Call UserControl11_MyCustomEvent(UserControl11, New UserControl1.MyCustomEventEventArgs(5))
これを、次のコード行に置き換えます。
Call UserControl11_MyCustomEvent(UserControl11(0), New UserControl1.MyCustomEventEventArgs(5))
参照
処理手順
方法: Visual Basic でオブジェクトを別の型に変換する
方法 : 構造体間にユーザー定義の変換を実装する (C# プログラミング ガイド)