Отключить мероприятие в Луа - PullRequest
1 голос
/ 14 декабря 2011

Я читал часть Учебного пособия по LuaInterface (здесь) и обнаружил, что вы можете связать событие с функцией, выполнив нечто похожее на это:

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

Теперь, с учетом этого, кто-нибудь знает, как я мог бы удалить обработчик событий? Скажем, я просто хочу отключить тот, что выше. Как бы я это сделал?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Вероятно, в .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, потому что вы кодируете, чтобы спасти свою жизнь.

0 голосов
/ 10 февраля 2013

Сначала вы должны назвать функцию:

function button_Click(sender, e)

Затем вы можете установить эту функцию для обработки событий:

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

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