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)
4

1 回答 1

1

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

将您的事件处理程序更改为

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)

以及将处理程序分配给点击的行

button.Click.Add(fun args -> buttonClick button.Text args)
于 2013-11-02T08:29:00.707 回答