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

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

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

Re[2]: フォームの継承とオブジェクト参照について


(過去ログ 66 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■38338 / inTopicNo.1)  フォームの継承とオブジェクト参照について
  
□投稿者/ あんぽ (1回)-(2009/07/11(Sat) 13:47:56)

分類:[C#] 

お世話になります。
現在FormAを継承元としたFormBを作成しています。
(ちなみに、FormAは各画面共通のボタン・ラジオボタン類を数個
配置してます。)

現在FormBをデザイナ上で開こうとすると、
「オブジェクト参照がオブジェクトインスタンスに設定されていません。」
のメッセージが出て開けませんでした。
(これはコンストラクタでNull参照例外が発生した認識でいます。)

エラー内容を見るとどうやらFormAのLoadイベント内で
発生しているようで、FormAのLoadイベント内を消したところ
(正確にはコンストラクタで呼んでいるメソッド内に移動した。)
正しく表示されました。

ただエラーの発生した行では、ある制御クラスのプロパティを
使っているのですが、制御クラスはFormA上のフィールドで
定義時にnewしており、プロパティ自身で得られる値も制御クラス
内で確実に初期化しています。

C#ではフォームを開いた場合デザイン時でもコンストラクタが
実行されるのはなんとなく知っているのですが、フォームの
Loadイベントも動くのでしょうか?

デザイン時のコンストラクタやイベントの動きが知りたいです。
また、フォームの継承もあまり好ましくない(?)様ですが、
後学の為に、あえてやっている部分もあります。
この辺りで注意すべき事などご教授頂けるとありがたいです。

環境はVS2005/C#/.net2.0です。
宜しくお願い致します。
引用返信 編集キー/
■38344 / inTopicNo.2)  Re[1]: フォームの継承とオブジェクト参照について
□投稿者/ やじゅ (1088回)-(2009/07/11(Sat) 20:35:34)
やじゅ さんの Web サイト
No38338 (あんぽ さん) に返信
> 現在FormAを継承元としたFormBを作成しています。
>
> 現在FormBをデザイナ上で開こうとすると、
> 「オブジェクト参照がオブジェクトインスタンスに設定されていません。」
> のメッセージが出て開けませんでした。
>
> C#ではフォームを開いた場合デザイン時でもコンストラクタが
> 実行されるのはなんとなく知っているのですが、フォームの
> Loadイベントも動くのでしょうか?
>
> デザイン時のコンストラクタやイベントの動きが知りたいです。

デザイン時に継承元のLoadイベントは動作します。
その場合、if (this.DesignMode) return; としてデザイン時に動作を回避するようにします。
「C# DesignMode Load 継承」といったキーワードで調べてみるといいですよ。
引用返信 編集キー/
■38385 / inTopicNo.3)  Re[2]: フォームの継承とオブジェクト参照について
□投稿者/ あんぽ (2回)-(2009/07/13(Mon) 12:45:54)
> デザイン時に継承元のLoadイベントは動作します。
> その場合、if (this.DesignMode) return; としてデザイン時に動作を回避するようにします。
> 「C# DesignMode Load 継承」といったキーワードで調べてみるといいですよ。

お返事遅くなりました。ありがとうございます。
ひとまず、Loadイベントの中身をコメントにして
対処していました。

早速試してみたいと思います。助かりました。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -