2011-02-02 19 views
0

このコードが動作しました!ParentFormはnullです(フォーム内のUserControl内のButton内)。

私のフォーム内のデザイン時に私のUserControlがドロップされたボタンがあります。すべてはうまくいき、ボタンのイベントでthis.ParentFormを呼び出すと、親フォームが正しく返されました。

リファクタリングの後、ボタンを使用してUserControlを別のNameSpaceに移動し、同じコードが機能しなくなりました。 this.ParentFormはNULLです

私はMSDNサイトを読んで、コントロールがIEまたは別のコンテキストでホストされている場合にのみthis.ParentFormがnullを返すと言います。しかし、私は名前空間だけを移動しました!

誰でもアイデアはありますか?

デザイン時にVisual Studioがフォームを表示しないため、別のコンストラクタを使用して親フォームに渡すことはできません。

答えて

2

デザイナーが生成したコードを含むコードビハインドファイルを見てください。名前の変更中は、Visual Studioデザイナを混乱させる可能性があり、Form.designer.csファイルでコントロールのインスタンスが「孤立している」可能性があります。

特に、InitializeComponentメソッドのコードを見て、UserControlのインスタンスを作成し、コンテナに追加したり、追加されていないコンテナに追加したりするコードを見つけることができるかどうかを確認してくださいフォーム。

+0

ベストセラー他のまともな説明がないと思います。 –

+0

私は問題を解決しましたが、解決策は少し奇妙でした。実際、私は内部変数の値をthis.ParentFormで "Costructor"に設定しました。これはうまくいかなかった。それから、私はこのファイルを削除し、必要に応じてthis.ParentFormを直接使用しました。今それは動作します。 – robob

3

コントロールがフォームに追加される前にコントロールの親フォームにアクセスしているかどうかを確認してください。

あなたのコードは、ユーザーコントロールクラスの初期化時にトリガされますが、コントロールが親フォームに追加されていません。

このコードをControl Loadイベントに入れてみてください。

関連する問題