2009-03-20 11 views
0

私はアコーディオンのAjaxコントロールを使用しています。各アコーディオンのペインには、テキストとボタンが動的に作成されています。ユーザーがクリックイベントを発生させると、どのウィンドウ内のどのボタンが放されたのかを知りたい。だから、ボタンのクリックイベントを処理して、ハンドラが押されたボタンに応じて何をすべきかを知るためにイベントハンドラにID(おそらくイベント引数によって)を送ることができるようにしたい。ASP.NET Clickイベントハンドル - VB.NETで引数を渡す方法は?

私はこのような何かをする必要があります知っている:

AddHandler bGetSessionMembers.Click, AddressOf bGetSessionMembers_click 

が、私はこのような何かを行うにwhanted:私はあなたがC#

bGetSessionMembers.Click += bGetSessionMembers_click(Me, "My ID") 
ていることにで行うことができると思い

AddHandler bGetSessionMembers.Click, AddressOf bGetSessionMembers_click(Me, "My ID") 

、またはC#であっても、異例の代理人とは異なります。

誰か手掛かりがありますか?

答えて

2

これを行うより良い方法があります。まず、通常のようにワイヤーアップあなたのボタンを: - あなたは、そのIDかについて何かをつかむことができますあなたが今Buttonを持っているif文その内部

Sub click(ByVal o As Object, ByVal e As EventArgs) 
    Dim button As Button = TryCast(o, Button)  
    If button IsNot Nothing Then 

    End If 
End Sub 

AddHandler Button1.Click, AddressOf Click 
AddHandler Button2.Click, AddressOf Click 

は、このようなClickメソッドを作成しますそれはあなたが望むものです。コメントに応答して

編集:

私はあなたがイベントが.NETでアップ配線されている方法を誤解することができると思います。あなたがこれを行うときは:あなたはメソッド呼び出しClickされていません

AddHandler Button2.Click, AddressOf Click 

を、あなたは、デリゲートの呼び出しリストにデリゲートを追加しますButton.Clickイベントのために、コンパイラが生成するメソッドにデリゲートを渡しています。 ButtonClickイベントを呼び出すと、代理人はButtonによって呼び出されます。

あなたがに何が渡されるかを変更することはできませんデリゲート経由でメソッドを呼び出すための1ではありませんので。あなたの最良のオプションは、私が上やったようにあなたに渡されObjectを使用してButtonにキャストすることです。

1

Andrewの答えはすばらしく、まさに私がやることです。その空白行は、System.Web.UI.ButtonのCommandArgumentおよびCommandNameプロパティを使用する方法を示すスニペットのために叫んでいるように見えるので、彼が書いたコードスニペットに追加したいだけです。

アンディは - あなたがここにいくつかのより多くのものを投げ、私を気にしない:)

HTH、

リチャードを願っています。

+0

気にしないでください!まあ、良い追加。 –

関連する問題