- PR -

[ASP.NET]フォームでユーザーコントロールのイベントを拾う方法

1
投稿者投稿内容
aoi
会議室デビュー日: 2004/09/16
投稿数: 16
投稿日時: 2004-11-08 15:41
お世話になります。

ASP.NETをVBで開発しています。

WebフォームにWebユーザーコントロールを貼り付け、
ユーザーコントロール上のボタンクリック時にイベントを発生させ、
フォーム側でそのイベントを拾う処理を行いたいのですが、
上手くイベントが拾えません。

ユーザーコントロールのボタンクリックイベントは発生し、RaiseEventまで実行しているようなのですが、Webフォームに定義したメソッドが実行されない状態です。
(デバッグで1行ずつ追っていっても、Webフォームに行かないまま終わってしまいます)

下にコードを記述します。

Webユーザーコントロール側
Public Class UserControl1
Inherits System.Web.UI.UserControl

Protected WithEvents btn As System.Web.UI.WebControls.Button

Public Event btnClicked(ByVal sender As System.Object, ByVal e As System.EventArgs)

Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click
RaiseEvent btnClicked(Me, System.EventArgs.Empty)
End Sub
End Class

Webフォーム側
Public Class WebForm1
Inherits System.Web.UI.Page

Private UC1 As New UserControl1

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler UC1.btnClicked, AddressOf Me.Search_clicked
End sub

Private Sub Search_clicked(ByVal sender As Object, ByVal e As System.EventArgs)
・・・・・
End Sub
End Class

何かお気付きの点、ご存知の事などありましたら、教えてください。
よろしくお願いします。

開発環境
ASP.NET(VB)
VS.NET2003
Windows2000
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-11-08 17:19
Private UC1 As New UserControl1

Protectedじゃないとまずいのでは?
私の環境では問題なく動きます。
aoi
会議室デビュー日: 2004/09/16
投稿数: 16
投稿日時: 2004-11-08 17:36
burton999さん、返答ありがとうございました。

-------------------------------------
Private UC1 As New UserControl1

Protectedじゃないとまずいのでは?
------------------------------------

早速Protectedにしてみましたが、結果は変わりませんでした。
何か他に必要なことなどありませんでしょうか?
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-11-08 18:14
今まではPrivateだったのでしょうか?
Privateだと
AddHandler UC1.btnClicked, AddressOf Me.Search_clicked
で例外が発生しないですか??

私の環境だとこのソースでうまくいきます。
ちゃんとデバッグできてますよね?
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-11-08 18:15
Protected UC1 As UserControl1
では?
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-11-08 18:19
推測ですが
UC1をPrivateで宣言していて
AddHandler UC1.btnClicked, AddressOf Me.Search_clicked
の個所でNULL参照で例外が発生していたため
ソース内でUC1を自分でNewしてたりしていませんか?

Lin
ベテラン
会議室デビュー日: 2004/11/08
投稿数: 50
投稿日時: 2004-11-08 18:23
デザイナのユーザーコントロールのプロパティで
IDがuc1になっていないのではないでしょうか。
aoi
会議室デビュー日: 2004/09/16
投稿数: 16
投稿日時: 2004-11-08 18:36
------------------------------------------------------
デザイナのユーザーコントロールのプロパティで
IDがuc1になっていないのではないでしょうか。
------------------------------------------------------

すみません、ご指摘の通り、IDをインスタンスと同名にしていませんでした。
無事、イベントを拾うことができました。

Linさん、burton999さん、todoさん、親切な返答ありがとうございました。

1

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