Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Events 断开Lua中的事件_Events_Lua_Disconnect_Luainterface - Fatal编程技术网

Events 断开Lua中的事件

Events 断开Lua中的事件,events,lua,disconnect,luainterface,Events,Lua,Disconnect,Luainterface,我正在阅读LuaInterface教程的一部分,发现可以通过执行以下类似操作将事件与函数关联: button.Click:Add(function() MessageBox.Show("We wuz clicked!",arg[0],MessageBoxButtons.OK) end) 现在,考虑到这一点,有人知道我将如何删除事件处理程序吗?假设我只想断开上面的一个。我该怎么做?可能.Net API有办法删除回调或完全重置按钮。你应该寻找那种方法 同时,这里有一个Lua独有的丑陋的黑客

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

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

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

可能.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全局-删除“本地”-可能需要将其设置为showMessageWhenButtonClicked全局)


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

首先必须命名函数:

function button_Click(sender, e)
然后可以设置此函数来处理事件:

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

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

我不熟悉用于管理按钮的.NETAPI。您知道如何在C#中添加和删除单击事件的回调吗?代码应该非常相似。