Question

Adding a EventHandler function to button click event with sender as a parameter.

let ButtonClicked (evArgs)= 
     DoSomthing...

button.Click.Add(fun evArgs -> ButtonClicked())

Code Works But I want to somthing like this

let ButtonClicked (evArgs,sender)= 
     sender.DoSomthing()
     ...

button.Click.Add(fun evArgs,sender -> ButtonClicked())

Thanks for your help.

Was it helpful?

Solution

You could do something like this:

let ButtonClicked evArgs sender =
    // Do something interesting here
    ()

button.Click.Add(fun evArgs -> ButtonClicked evArgs button)

OTHER TIPS

EDIT: Full example. Paste this into the interpreter:

open System.Windows.Forms

let form = new Form(Text = "Form")
let button = new Button(Text = "Button") 
form.Controls.Add(button)

let ButtonClicked sender evargs = 
    printfn "From '%A' received '%A'" sender evargs
button.Click.AddHandler (new System.EventHandler(ButtonClicked))

Application.Run(form)
;;

(By the way, how cool is it you can just paste that into the interpreter?)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top