- PR -

[VB.NET]コンポーネントから親FORMのHandle取得

投稿者投稿内容
ophiuchus
会議室デビュー日: 2003/08/27
投稿数: 11
投稿日時: 2005-05-25 18:00
新規に「コンポーネントの追加」で自作コンポーネントを
作成しました。それを別プロジェクトから参照し、Formに
貼り付け実行をしています。

その際に自作コンポーネント側から親Formのウィンドウ
ハンドルを取得したいのですが、取得できず苦戦しています。

どなたかヒントがあればご教授の程、宜しくお願い致します。

WinXP SP1 + .NET Framework1.0 + VS.NET 2002
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-05-25 18:16
Control.Parentで取れません?
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-05-25 18:22
こんにちは、じゃんぬ です。

引用:

新規に「コンポーネントの追加」で自作コンポーネントを
作成しました。それを別プロジェクトから参照し、Formに
貼り付け実行をしています。
その際に自作コンポーネント側から親Formのウィンドウ
ハンドルを取得したいのですが、取得できず苦戦しています。


それって本当にコンポーネントなんですか?
何か違う気が... カスタム コントロールではないですよね?

カスタムコントロールであれば、this.FindForm().Handle ですけど...



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ophiuchus
会議室デビュー日: 2003/08/27
投稿数: 11
投稿日時: 2005-05-25 18:41
引用:
それって本当にコンポーネントなんですか?
何か違う気が... カスタム コントロールではないですよね?


コード:
Public Class hoge

Inherits System.ComponentModel.Component


で記述が始まってますのでカスタムコントロールでは無いと思います。
ツールボックスからFormにドラッグ&ドロップした時にTimerコントロール
と同じ場所(コンポーネントトレイ?)に入れたかったので
カスタムコントロールとしていません。

引用:
Control.Parentで取れません?


インテリセンスでParentが出てきません。多分System.Windows.Forms.Control
を継承していないせいだと思うのですが…。

[ メッセージ編集済み 編集者: ophiuchus 編集日時 2005-05-25 19:06 ]
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-05-25 21:24
引用:

その際に自作コンポーネント側から親Formのウィンドウ
ハンドルを取得したいのですが、取得できず苦戦しています。



簡単には出来ないと思うな。

Cmoponent が貼られる先は Form とは限らないもの。

どうしても親 Form のウィンドウハンドルが必要な造りなら、Control として作ったほうがいいと思う。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2005-05-26 01:54
南部です。

コード:
private System.Windows.Forms.Form parent;
public System.Windows.Forms.Form Parent 
{
    get { return parent; }
    set { parent = value; }
}



ダメ、、、?
デザイン時にParentプロパティにセット
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-05-26 05:57
引用:

デザイン時にParentプロパティにセット



それでいいなら質問しないような。。。
てか、プロパティにしないでも public なフィールドでもいいわけだし。

そういう方向なら、IComponent.Site を無理やり Form1 とかでキャストしてみるとか。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-05-26 08:51
でも、VS.NET のビジュアルデザイナで Component を貼り付けたときって、
IComponent.Site が設定されていない(メンバ変数にインスタンスを格納するだけ)
な気がするんですが…

デザイン時には使っているのかもしれませんが。

スキルアップ/キャリアアップ(JOB@IT)