在Lua中断开一个事件

我正在阅读 LuaInterface 教程的一部分(这里),发现您可以通过类似于以下方式将事件与函数关联:

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

现在,有了这个想法,有没有人知道我如何删除事件处理程序?比方说我只想断开上面的链接。我该怎么做呢?

原文链接 https://stackoverflow.com/questions/8503364

点赞
stackoverflow用户312586
stackoverflow用户312586

可能 .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 设为全局变量 - 移除 "local")。

但这非常粗糙和暴力。除非你没有时间浏览 .Net 文档,因为你在编码以拯救自己的生命,否则不要使用它。

2011-12-14 13:41:11
stackoverflow用户2059136
stackoverflow用户2059136

首先,您必须为函数命名:

function button_Click(sender, e)

然后,您可以将此函数设置为处理事件:

button.Click:Add(button_Click)    -- 添加事件处理程序

button.Click:Remove(button_Click) -- 移除事件处理程序。
2013-02-10 16:13:29