1

LuaInterfaceチュートリアル(ここ)の一部を読んでいて、次のようなことを行うことで、イベントを関数に関連付けることができることがわかりました。

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

さて、これを念頭に置いて、イベントハンドラーを削除する方法を誰かが知っていますか?上記のものを切断したいとします。どうすればいいですか?

4

2 に答える 2

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ドキュメントを閲覧する時間がない場合を除いて、これを使用しないでください。

于 2011-12-14T13:41:11.850 に答える
0

まず、関数に名前を付ける必要があります。

function button_Click(sender, e)

次に、イベントを処理するようにこの関数を設定できます。

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

button.Click:Remove(button_Click) -- Remove event handler.
于 2013-02-10T16:13:29.657 に答える