断开 Lua 中的事件

发布于 2024-12-20 23:02:37 字数 330 浏览 2 评论 0原文

我正在阅读 LuaInterface 教程的一部分(此处),发现您可以关联一个通过执行类似于以下操作的函数来处理事件:

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

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

I was reading a part of the LuaInterface Tutorial (here) and found out that you can associate an event with a function by doing something similar to this:

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

Now, with this in mind, does anybody know how I would remove an event handler? Say I just want to disconnect the one above. How would I do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

中二柚 2024-12-27 23:02:37

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

Probably the .Net API has a way to remove callbacks or reset the button completely. You should look for that method.

In the meantime, here's a Lua-only ugly hack that should work:

local showMessageWhenButtonClicked = true

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

When you want to deactivate the message, just do

showMessageWhenButtonClicked = false

(You might need to make showMessageWhenButtonClicked global - removing the "local"- if you are going to deactivate it in a different scope - for example, in another file).

But this is very crude and brutish. Don't use it unless you don't have time to browse the .Net documentation because you are coding to save your life.

慵挽 2024-12-27 23:02:37

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

function button_Click(sender, e)

然后您可以设置该函数来处理事件:

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

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

First you must name the function:

function button_Click(sender, e)

Then you can set this function to handle the events:

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

button.Click:Remove(button_Click) -- Remove event handler.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文