1

我正在阅读 LuaInterface Tutorial (here)的一部分,发现您可以通过执行类似的操作将事件与函数关联:

button.Click:Add(function()
    MessageBox.Show("We wuz clicked!",arg[0],MessageBoxButtons.OK)
end)

现在,考虑到这一点,有人知道我将如何删除事件处理程序吗?假设我只想断开上面的连接。我该怎么做?

4

2 回答 2

2

.Net API 可能有办法删除回调或完全重置按钮。你应该寻找那个方法。

与此同时,这里有一个 Lua-only 丑陋的 hack 应该可以工作:

local showMessageWhenButtonClicked = true

button.Click:Add(function()
  if showMessageWhenButtonClicked then
    MessageBox.Show("We wuz clicked!",arg[0],MessageBoxButtons.OK)
  end
end)

当您想停用消息时,只需执行

showMessageWhenButtonClicked = false

(您可能需要将 showMessageWhenButtonClicked 设为全局 - 删除“本地” - 如果您要在不同的范围内停用它 - 例如,在另一个文件中)。

但这是非常粗暴和野蛮的。除非您没有时间浏览 .Net 文档,否则不要使用它,因为您正在编写代码以挽救生命。

于 2011-12-14T13:41:11.850 回答
0

首先你必须命名函数:

function button_Click(sender, e)

然后你可以设置这个函数来处理事件:

button.Click:Add(button_Click)    -- Add event handler

button.Click:Remove(button_Click) -- Remove event handler.
于 2013-02-10T16:13:29.657 回答