スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
拍手コメントを見る

Visual Studio で Load イベントを持つ Form を継承するとデザイナでエラー

プチ悩んだので、解決方法をサクッと。

C# での話です。

FormA を継承して FormB を作ってみたのですが、デザイナで開くと次のようなエラーがでました。
デザイナの読み込み時に1つ以上のエラーが発生しました。エラーは以下に一覧表示されます。コードの変更が必要なエラーもありますが、プロジェクトを再度ビルドすると解決できるエラーもあります。
----
オブジェクト参照がオブジェクトインスタンスに設定されていません。

場所 Hoge.Hoge_Load(Object sender, EventArgs e) 場所 ・・・ Hoge.cs : 行 xxx
   :


■原因
独立したFormである Hoge の Hoge_Load() は、実際のアプリケーション実行時に呼び出されるので問題はありませんが、Hoge を継承した Form である Fuga をデザイナで開くと、Hoge の Load イベントが実行されてしまうようです。
Hoge_Load() 内部に、実行時に生成されるインスタンスの初期化などがある場合、間違いなくこのエラーが発生します。

■処方箋
継承元である Hoge Form の Hoge_Load() の最初に次の1行(?)を追加します。

if (this.DesignMode) return;

これで、Fuga Form をデザイナで開いたときに、Hoge_Load() が呼ばれますが、
「デザインモードで動いているから、後の処理はしない」状態でデザイナに処理が戻ってきます。

めでたしめでたし。 拍手コメントを見る

コメント

宇宙語…(笑)

ときどき

喋るし、書きますよ。

宇宙語。

ふと、調べ物してて過去の自分の書いたレポートみつけて読んでみたけど、、

今となっては「宇宙語」でした(笑)。
非公開コメント
ブログ内検索
プロフィール

雷ぶ

Author:雷ぶ

最近の記事
最近のコメント
最近のトラックバック
カテゴリー
月間アーカイブ
ブロとも申請フォーム

この人とブロともになる

RSSフィード
リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。