Thank you all for your suggestions. They've been most helpful. I think i've mostly wrapped my head around event handlers. Here's one last question. What's the best way to test if a given object is an event? Obviously the way below: (object.GetType.get_event("EventName") != nil) is one way, but is there a more efficient (more rubonic) way?
I've tried: button = Button.new button.click # => IronRuby.Builtins.RubyEvent # I cant test against IronRuby::Builtins::RubyEvent, because it's not defined button.click.is_a?(System::EventHandler) # error, about TypeGroups button.click.is_a?(System::EventHandler[]) # false As an aside, I looked at the changelog for, 0.9.0 and saw this: 2) Implements TypeGroup#[] overload taking a Fixnum. This is useful when one needs to select a generic type definition out of a group of types. For example, given three classes C: public class C { public virtual int Arity { get { return 0; } } } public class C<T> { public virtual int Arity { get { return 1; } } } public class C<T,S> { public virtual int Arity { get { return 2; } } } p C[0] # => C p C[1] # => C[T] p C[2] # => C[T, S] However, this fails: System::EventHandler[0] # invalid value for class: 0 You guys have been super helpful. It's really great to see such an active and great community forming around IronRuby. Thanks, Martin On Mon, Aug 3, 2009 at 6:52 PM, Ray Vernagus <r.verna...@gmail.com> wrote: > ** I tried sending this much earlier but my message didn't go through ** > > Hi, Martin-- > > Here's a short example that might illustrate what you're trying to > accomplish: > > require "System.Windows.Forms" > include System > include System::Windows::Forms > > button = Button.new > > click_event = button.GetType.get_event("Click") > > on_click = EventHandler.new { |sender, e| puts "Click!" } > > click_event.add_event_handler(button, on_click) > > button.perform_click # Click! > > click_event.remove_event_handler(button, on_click) > > button.perform_click > > More canonical examples of using events in IronRuby are found here: > http://www.ironruby.net/Documentation/.NET/Events > > --Ray > > On Mon, Aug 3, 2009 at 2:46 PM, Martin Smith <martin.smith...@gmail.com>wrote: > >> Hello, >> >> I was wondering how I can get a delegate in IronRuby. >> >> One thing I was thinking about doing was trying to attach an event handler >> with an EventInfo and it requires a delegate. It has a method called >> AddEventHandler(object, Delegate), and i wanted to attach an event handler. >> >> But I can't find any way to get a delegate in ruby. How would you guys do >> it? >> >> I know i can also use: >> >> object.send(event_name) { |*e| ...... } >> >> In that case how would i remove that event handler? >> >> Thanks in advance, >> Martin >> >> _______________________________________________ >> Ironruby-core mailing list >> Ironruby-core@rubyforge.org >> http://rubyforge.org/mailman/listinfo/ironruby-core >> >> > > _______________________________________________ > Ironruby-core mailing list > Ironruby-core@rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core > >
_______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core