- - PR -
イベントの公開(特殊)
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-02-02 21:20
いつもお世話になっております。
カスタムコントロールから以下のようにして、 ユーザコントロールをロードしています。 control = this.Page.LoadControl("userctl.ascx"); そして、このカスタムコントロールをWebFormに貼り付けています。 このとき、ユーザコントロールで定義したイベントをハンドルし、 カスタムコントロールで公開したいのですが、方法が分かりません。 controlのイベントの取得ができません。 皆様、何か良い方法は無いでしょうか? | ||||
|
投稿日時: 2005-02-02 22:18
ユーザコントロールで発生したイベントをカスタムコントロールで受け取って、カスタムコントロールのイベントとして再送出してやればいいのでは?
でも、動いてる?別のプロジェクトに持って行ったら動かないんじゃないかなぁ? _________________ | ||||
|
投稿日時: 2005-02-03 13:38
ご回答有り難う御座います。
ただ、controlの型指定が出来ないため(したくない)、 動的にイベントをハンドルしたいのですが、 可能でしょうか? お願いします。 | ||||
|
投稿日時: 2005-02-03 14:46
こんにちは。
うまくいくかわかりませんが、control.GetType().GetEvents()(またはGetEvent)でEventInfoを取得し、AddEventHandlerでイベントを関連付け、発生したイベントをカスタムコントロールで再送出。。。。 (全く検証していないのでハズしてるかも) なんでこんなことしたいのか、イマイチわかりませんが。 | ||||
|
投稿日時: 2005-02-03 15:44
ご回答ありがとう御座います。
理由は、ユーザコントロールで、内部画面を実装し、 カスタムコントロールで概観(スキン)設定できるようにしたいからです。 方法が変でしょうか? 普通はどのような実装方法をとるのでしょうか? | ||||
|
投稿日時: 2005-02-03 19:42
_control.GetType().GetEvent("EditClick") += new EventHandler(Edit_Click); この方法で試みてみましたが、Errorになります。 何か良い方法はないでしょうか? | ||||
|
投稿日時: 2005-02-03 21:08
したいことが伝わってきません(^_^; まず、WebカスタムコントロールとWebユーザコントロールを作ろうとしていることから、この2つがどのように動作し、どのような制約があるか知っているもの、と考えます。私の前のポストで、『でも、動いてる?別のプロジェクトに持って行ったら動かないんじゃないかなぁ?』というのは、この“制約”を考えてのことですが、これは大丈夫でしたか? Webユーザコントロールは、同じアプリケーションドメインになければ動作しません。これは、単純には同じプロジェクトでなければならないということです。Webカスタムコントロールになると別のプロジェクトになると思います。仮に、1つのソリューションで1つのアプリケーションとし、アプリケーションドメインが同じであるとしましょう。 しかし、Webカスタムコントロールの目的は、いろいろなプロジェクトで同じコントロールを部品として使うことです。このWebカスタムコントロールを、他のソリューションで使おうとすると、Webユーザコントロールをロードするが為に、プロジェクトごとソリューションに追加しなければならない、そう思うのですが、いかがでしょうか? もしこれが、「Webユーザコントロールを切り替えるWebカスタムコントロールを作っている」ということなら、上記のことから目的とする動作をしないと思います。 もちろん、単一のソリューションでしか使わない、ということでしたら、何ら問題はありません。が、それならば「Webユーザコントロールを切り替えるWebユーザコントロール」でもかまわないと思いますし、あるいはページのコード中に埋め込めばすむ話しではないでしょうか。 _________________ | ||||
|
投稿日時: 2005-02-08 11:16
どうしても以下のコードでエラーがでます。 何か指定がおかしいでしょうか? myUserControl.GetType().GetEvent("myUserControlButtonClick").AddEventHandler(this, new EventHandler(Menu_Click)); オブジェクトがターゲットの型と一致しません。 |