.net 从F中的事件处理程序获取按钮文本#

.net 从F中的事件处理程序获取按钮文本#,.net,f#,functional-programming,.net,F#,Functional Programming,如何在buttonClick事件处理程序中获取单击的按钮文本 let buttonClick args = let rnd = new Random() //MessageBox.Show(button.Text) let r, g, b = rnd.Next(256), rnd.Next(256), rnd.Next(256) form.BackColor <- Color.FromArgb(r, g, b) for x = 0 to 3 do for y = 0

如何在buttonClick事件处理程序中获取单击的按钮文本

let buttonClick args = 
  let rnd = new Random()
  //MessageBox.Show(button.Text)
  let r, g, b = rnd.Next(256), rnd.Next(256), rnd.Next(256)
  form.BackColor <- Color.FromArgb(r, g, b)

for x = 0 to 3 do
  for y = 0 to 3 do
    let button = new Game15Button(new Point(x, y))
    button.Size <- new Size(50, 50)
    button.Click.Add(buttonClick)
    form.Controls.Add(button)
let按钮单击args=
设rnd=new Random()
//MessageBox.Show(按钮.文本)
设r,g,b=rnd.Next(256),rnd.Next(256),rnd.Next(256)

form.BackColor您可以将
按钮单击
函数更改为获取两个参数,其中添加的参数将是调用者知道的按钮文本。但是现在您不能将此函数指定为按钮单击的eventhandler,因为它只需要获取1个参数。一种解决方案是使用带有1个参数的lambda函数调用带有按钮文本的
按钮单击
函数,并将其参数作为第二个参数传递

将eventhandler更改为

let buttonClick text args = 
  let rnd = new Random()
  MessageBox.Show(text)
  let r, g, b = rnd.Next(256), rnd.Next(256), rnd.Next(256)
  form.BackColor <- Color.FromArgb(r, g, b)

您似乎是一个C#dev。一个普遍的提示是,在C#和F#@JohnPalmer中,一切都以完全相同的方式工作。我可以在C#中使用sender参数,var button=(button)sender;但在F#中只有一个EventArgs参数
button.Click.Add(fun args -> buttonClick button.Text args)