断开Lua中的活动

时间:2011-12-14 10:59:03

标签: events lua disconnect luainterface

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

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

现在,考虑到这一点,是否有人知道如何删除事件处理程序?说我只想断开上面的那个。我该怎么做?

2 个答案:

答案 0 :(得分:2)

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

与此同时,这是一个Lua唯一的丑陋黑客应该有效:

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文档,否则请不要使用它,因为您正在编码以挽救您的生命。

答案 1 :(得分:0)

首先,您必须为该功能命名:

function button_Click(sender, e)

然后您可以设置此功能来处理事件:

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

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