Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   ASP .Net (http://www.velocityreviews.com/forums/f29-asp-net.html)
-   -   Add Event Handler Dynamically, but assigning function name at run-time, not to static function (http://www.velocityreviews.com/forums/t69239-add-event-handler-dynamically-but-assigning-function-name-at-run-time-not-to-static-function.html)

Jose Suero 12-21-2003 09:05 AM

Add Event Handler Dynamically, but assigning function name at run-time, not to static function
 
Hi all
I have a dynamically created button, I can add an event handler with:

AddHandler button.click, AddressOf static_function

This works great, but what I need is to create a function that takes
the control, the event and the function as parameters, something like:

function addevent(control as object, event as string, functionname as
string)
AddHandler control.event, addressof functionname
end function

A solution for this would be to add a single function that handles all
buttons and select the correct action thru commandarguments, that
would work, but it's really not what i'm looking for.


Thanks in advance,

Jose Suero

Teemu Keiski 12-23-2003 10:21 AM

Re: Add Event Handler Dynamically, but assigning function name at run-time, not to static function
 
Hi,

you cannot pass the functionname as such as AddressOf expects a delegate
type, not function name as string. You could try to use reflection as this
article explains:

http://www.123aspx.com/redir.aspx?res=31050

--
Teemu Keiski
MCP, Microsoft MVP (ASP.NET), AspInsiders member
ASP.NET Forum Moderator, AspAlliance Columnist


"Jose Suero" <ms@mstn.com> wrote in message
news:fddd128d.0312210105.2882833b@posting.google.c om...
> Hi all
> I have a dynamically created button, I can add an event handler with:
>
> AddHandler button.click, AddressOf static_function
>
> This works great, but what I need is to create a function that takes
> the control, the event and the function as parameters, something like:
>
> function addevent(control as object, event as string, functionname as
> string)
> AddHandler control.event, addressof functionname
> end function
>
> A solution for this would be to add a single function that handles all
> buttons and select the correct action thru commandarguments, that
> would work, but it's really not what i'm looking for.
>
>
> Thanks in advance,
>
> Jose Suero




Jose Suero 12-26-2003 08:40 PM

Re: Add Event Handler Dynamically, but assigning function name at run-time, not to static function
 
Thanks a lot for your post, It took me on the right track, I had to
change tiny things, since I was getting an error but this works for
imagebuttons, binding an event for a dynamic created object from a
class library

Public Shared Function addevent(ByVal controlname As String, ByVal
type As String, ByVal eventname As String, ByVal procedure As String)
Dim control As System.Web.UI.WebControls.ImageButton
control = page.findcontrol(controlname)
Dim p As Object
Dim DLLName As String = "projectname"
Dim asm As [Assembly] = [Assembly].Load(DLLName)
Dim t As Type = asm.GetType(DLLName & ".WebForm1", True)
p = Activator.CreateInstance(t)
Dim mymethod As MethodInfo = t.GetMethod(procedure)
' get a reference to the EventInfo for this object
Dim pEv As EventInfo = control.GetType.GetEvent(eventname)
' create a delegate to the local procedure
Dim pDel As [Delegate] =
[Delegate].CreateDelegate(pEv.EventHandlerType, mymethod)
' make the local procedure a handler for the event
pEv.AddEventHandler(control, pDel)
End Function

"Teemu Keiski" <joteke@aspalliance.com> wrote in message news:<#$Kx45TyDHA.3744@TK2MSFTNGP11.phx.gbl>...
> Hi,
>
> you cannot pass the functionname as such as AddressOf expects a delegate
> type, not function name as string. You could try to use reflection as this
> article explains:
>
> http://www.123aspx.com/redir.aspx?res=31050
>
> --
> Teemu Keiski
> MCP, Microsoft MVP (ASP.NET), AspInsiders member
> ASP.NET Forum Moderator, AspAlliance Columnist
>
>
> "Jose Suero" <ms@mstn.com> wrote in message
> news:fddd128d.0312210105.2882833b@posting.google.c om...
> > Hi all
> > I have a dynamically created button, I can add an event handler with:
> >
> > AddHandler button.click, AddressOf static_function
> >
> > This works great, but what I need is to create a function that takes
> > the control, the event and the function as parameters, something like:
> >
> > function addevent(control as object, event as string, functionname as
> > string)
> > AddHandler control.event, addressof functionname
> > end function
> >
> > A solution for this would be to add a single function that handles all
> > buttons and select the correct action thru commandarguments, that
> > would work, but it's really not what i'm looking for.
> >
> >
> > Thanks in advance,
> >
> > Jose Suero



All times are GMT. The time now is 05:03 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.