Wiki
Version 1 (modified by hopscc, 15 years ago)

--

Ignore

Disconnect an event from some particular event handling code by specifying an existing event handler (method reference) for a particular Event instance.

This is the converse of Listen.

Grammar

ignore <event>, <method-reference>

Examples

use System.Windows.Forms

...
        button = Button(parent=p, autoSize=true, text='One', tag=1)
        # connect event and handling code
        listen button.click, ref .clickHandler
        ...
        # disconnect event and its handling code
        ignore button.click, ref .clickHandler
...
def clickHandler(source as Object, args as EventArgs)  # doClick
    pass

Full example showing signature and event declaration and convenience method for firing/raising an event.

# delegate for ActionEvent  <eventName>EventHandler
sig ActionEventHandler(sender as Object, args as EventArgs)

class Generator
	# event dcl for event called Action
	# event <eventName>Event as <sigName> (<eventName>EventHandler)    
	event actionEvent as ActionEventHandler

	# (protected) method to raise/fire the event for this class 
	# {on,fire}<eventName>Event
	def _onActionEvent(args as EventArgs)      # fireActionEvent
		raise .actionEvent, args

class Listener
	# the event handler method do<eventName>
	def doAction(source as Object, args as EventArgs)
		print 'Event received from [source]'

...
	def driver
		g = Generator()
		l = Listener()
		
		#tie the generator event to the Listener method
		listen g.actionEvent, ref l.doAction

		...    

		#untie the event and listener
		listen g.actionEvent, ref l.doAction

Notes

The event handler method must be a reference to a method not a method invocation.

In practice this means that most ignore statements will have their second argument as a method name prefixed with ref.