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

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

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

Re[1]: コンポーネントから親フォームを参照する方法


(過去ログ 109 を表示中)

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

■64973 / inTopicNo.1)  コンポーネントから親フォームを参照する方法
  
□投稿者/ メリアン (1回)-(2013/01/26(Sat) 22:45:19)

分類:[VB.NET/VB2005 以降] 

VS2008を使ってプログラミングをしています。
編集中のプロジェクトで「追加」→「コンポーネント」でComponent1クラスを作成し、
これをデザイナでフォームに貼り付けて使いたいと思っています。

そこで分からないことが出てきました。
親フォームのプロパティ等をコンポーネント内での処理に使うため、このコンポーネントから親フォームを参照したいのですが、
どうすればいいのでしょうか?

Component1のコードを見ると、System.ComponentModel.Componentを継承しているようですが、
ComponentクラスをMSDNで調べてみても良く分かりません。

よろしくお願いします。
引用返信 編集キー/
■64974 / inTopicNo.2)  Re[1]: コンポーネントから親フォームを参照する方法
□投稿者/ じゃんぬねっと (7回)-(2013/01/27(Sun) 07:32:18)
じゃんぬねっと さんの Web サイト
No64973 (メリアン さん) に返信
> VS2008を使ってプログラミングをしています。
> 編集中のプロジェクトで「追加」→「コンポーネント」でComponent1クラスを作成し、
> これをデザイナでフォームに貼り付けて使いたいと思っています。
>
> そこで分からないことが出てきました。
> 親フォームのプロパティ等をコンポーネント内での処理に使うため、このコンポーネントから親フォームを参照したいのですが、
> どうすればいいのでしょうか?
>
> Component1のコードを見ると、System.ComponentModel.Componentを継承しているようですが、
> ComponentクラスをMSDNで調べてみても良く分かりません。
>
> よろしくお願いします。

その Component の GetService メソッドから IDesignerHost のインスタンスを取得します。そのインスタンスにある RootComponent プロパティが、'その Component が配置されているコンテナ型のインスタンス' が取得できます。

上記の引用符内が妙な言い回しなのは、コンポーネントが Form に直接所属していれば Form が、UserControl に所属しているならば UserControl のインスタンスが取得できるからです。ゆえに、いかなる場合でも親 Form が欲しいのであれば、FindForm メソッドをさらに呼び出すと良いでしょう。

どのタイミングで親 Form が必要なのかわかりませんが、設計を見直した方が良い可能性はあります ("コンポーネント" としては不適切になるので)。ただしデザイン時であれば、例外はあります (例をあげると ToolTip コントロールなど)。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -