@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

[ASP.NET]カスタムコントロールのイベント

1
投稿者投稿内容
新人S
ベテラン
会議室デビュー日: 2005/10/12
投稿数: 74
投稿日時: 2005-10-31 23:08
いつもお世話になってますm(_ _)m

今日は複合コントロールについての質問をお願いします。
(言語:VB)

Controlを継承して、その中にテキストボックスとイメージボタンをメンバで持つようなコントロールクラスを作成しました。
ImageButtonがクリックされたときのイベントを記述したいのですが、どうしてもうまくいきません。(波線でコンパイルエラーがでます)

以下、エラーメッセージです。
『メソッド'Public ImgButton_Click(sender As Object, e as System.EventArgs)'に、デリゲート'Delegate Sub ImageClickEventHandler(sender As Object, e As System.Web.UIImageClickEventArgs)'と同じシグニチャがありません。』

と、表示されます。

しかし、これはImageButtonではなく、ただのButtonを使用するとこのようなエラーは出ません。単なるクリックイベントですし、ImageButtonにもクリックのイベントはあるのでなぜダメなのかがわかりません。

ちなみに、クラスの構成としては、
メンバにTextBoxとImageButtonの変数を持ち、コンストラクタで2つをNewします。
以下は、CreateChildControlsメソッド内の処理です。
------------------------------------------------------------------
Protected Overrides Sub CreateChildControls()

Me.Controls.Add(New LiteralControl("<h3>"))

'テキストボックス
Me.Controls.Add(m_TextBox)
Me.Controls.Add(New LiteralControl(" "))

'Imageボタン
AddHandler m_CalendarImgButton.Click, AddressOf CalendarImgButton_Click
Me.Controls.Add(m_CalendarImgButton)
Me.Controls.Add(New LiteralControl("</h3>"))

End Sub
-----------------------------------------------------------------

別のサイトからコピーして、ソースを使ったので、自分では今のところ詳しくはわからない処理も入っているのですが、

AddHandler m_CalendarImgButton.Click, AddressOf CalendarImgButton_Click

の1行をコメントアウトすれば、ブラウザ上で表示も問題なくできます。

ImageButtonだからこのやり方ではダメなのでしょうか?
長文になってしまい、申し訳ありませんが、どなたかご教授お願いいたします。
新人S
ベテラン
会議室デビュー日: 2005/10/12
投稿数: 74
投稿日時: 2005-10-31 23:58
すみませんイベントの引数が間違っていました!!
なので、コンパイルエラーは消えましたm(_ _)m

ですが、新たなエラーがでてきました。
クリックイベントを作成したのですが、クリックしてもそのイベントを通ってくれません。

CreateChildControls内には以下の記述をしています。

AddHandler m_CalendarImgButton.Click, AddressOf CalendarImgButton_Click

イベント処理は以下のようなメソッドです。
---------------------------------------------------------------------------

Public Sub ImgButton_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs)
'イベント処理の中身

End Sub

---------------------------------------------------------------------------

上記のように書いたのですが、ここを通ってくれません(T_T)

ご教授お願い致します。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-01 00:45
引用:

新人Sさんの書き込み (2005-10-31 23:58) より:

上記のように書いたのですが、ここを通ってくれません(T_T)


私の環境では大丈夫でした。
確認はどのように取られたのでしょう?
ブレーク ポイントをおいて確かめたのでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
新人S
ベテラン
会議室デビュー日: 2005/10/12
投稿数: 74
投稿日時: 2005-11-01 08:59
じゃんぬねっとさん、いつもありがとうございますm(_ _)m

確認はブレイクポイントをはりました。
ブレイクポイントではよろしくないのでしょうか?
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-11-01 09:24
CalendarImgButton_Click
ImgButton_Click
名前が違うから・・・
新人S
ベテラン
会議室デビュー日: 2005/10/12
投稿数: 74
投稿日時: 2005-11-01 09:36
すみません、こちらに投稿する際に名前を間違えたようです(>_<;

正しくは、

CreateChildControls内には以下の記述をしています。

AddHandler m_CalendarImgButton.Click, AddressOf CalendarImgButton_Click

下は、クリックイベントのメソッドです。
-------------------------------------------------------------------------
Public Sub CalendarImgButton_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs)

'処理内容

End Sub
-------------------------------------------------------------------------

このように記述しています。
なので、名前はあっていると思うので原因がわからず…なんです(;_;)
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-01 09:53
とりあえず、原因の絞込みをしましょう。
まず、通常の Handles キーワードでも動作しないかを確認してください。

コード:

Public Sub CalendarImgButton_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles m_CalendarImgButton.Click
  '/ 処理内容 
End Sub


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
こあーるさん
会議室デビュー日: 2008/10/03
投稿数: 1
投稿日時: 2008-10-03 18:44
僕もImageUrlを設定し忘れてて同じ症状になりました。

設定したら動きました。

[ メッセージ編集済み 編集者: こあーるさん 編集日時 2008-10-03 18:44 ]
1

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