[ anakin14 @ 30.07.2011. 23:10 ] @

Code:

...
Dim ctrl As New System.Windows.Forms.Button
                    TabControl1.TabPages.Item(k - 1).Controls.Add(ctrl)
                    AddHandler ctrl.Click, AddressOf onbuttonclick
...



 Sub onbuttonclick()
        MsgBox("Hello from " - ovde bih da mi kaze koje je dugme... ctrl.name)
    End Sub


[ vujkev @ 30.07.2011. 23:34 ] @
ovo kao radi?
Code:
 Sub onbuttonclick()
        MsgBox("Hello from " - ovde bih da mi kaze koje je dugme... ctrl.name)
    End Sub


koliko je meni poznato Click handler mora da ima dva parametra, tj. treba da bude ovako
Code:
 Sub onbuttonclick(sender as object, e as eventargs)
        dim btn as button = directcast(sender, button)
        MsgBox("Hello from " & btn.name)
    End Sub


sender je kontrola koja je aktivirala Click event tj. koju si kliknuo
[ anakin14 @ 31.07.2011. 12:41 ] @
naravno da ne radi, tu sam stavio sta bih hteo da postignem:D
[ Shadowed @ 31.07.2011. 13:27 ] @
/me se ceska po glavi...
Fora je sto radi. Ne znam ni ja kako, ali radi i dodavanje handler-a i pozivanje istog na click. Probah juce.

U svakom slucaju, ono sto ti je vujkev rekao ti resava problem. Napravi ispravan handler i sender parametar ti je button koji je pozvao handler. OK, ovo nije 100% obavezno ali mislim da neces imati problem sa tim pristupom.
[ vujkev @ 31.07.2011. 13:39 ] @
meni ne radi (.NET3.5)

Citat:

AddHandler Me.Click, AddressOf onclick

private sub onclick()

end sub

Error 3 Method 'Private Sub onclick()' does not have a signature compatible with delegate 'Delegate Sub EventHandler(sender As Object, e As System.EventArgs)'.


kako kod tebe radi? :)
[ Shadowed @ 31.07.2011. 14:24 ] @
Prvo sam probao u 4.0 pa kada si pomenuo i u 3.5...

[ ravni @ 03.08.2011. 18:14 ] @
zaboravio sam tehnikalije, ali u C# se moze napisati
Code:
btn.Click += delegate{};
i to prolazi. Valjda kompajler to interno kastuje u odgovarajuci delegat.
[ Shadowed @ 09.08.2011. 18:43 ] @
Nadjoh vremena da se malo pozabavim ovim i otkrijem kako radi (onako kako sam i pretpostavljao).
U pozadini se kreira dodatna funkcija koja se zaista doda kao event handler i ima ispravan potpis a ona pozove funkciju koju smo mi napravili.
Ovo je kod koji VS kreira u pozadini i kompajlira:
Code (vbnet):

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
    Dim btn As New Button
    Me.Controls.Add(btn)
    AddHandler btn.Click, New EventHandler(AddressOf Me._Lambda$__1)
End Sub

Private Sub _Lambda$__1(ByVal a0 As Object, ByVal a1 As EventArgs)
    Me.onbuttonclick
End Sub
 



Ovo radi samo sa funkcijom koja nema argumenata jer inace ova generisana ne bi znala sta da prosledi.