Thanks. Part of this question was also about returning and creating RubyEvent objects. Is there a way to declare an event on the ruby side without a "RubyEvent" object?
Thanks, Martin On Tue, Aug 4, 2009 at 12:39 PM, Tomas Matousek < tomas.matou...@microsoft.com> wrote: > BTW: > > > > Instead of using Reflection > > > > click_event = button.GetType.get_event("Click") > on_click = EventHandler.new { |sender, e| puts "Click!" } > click_event.add_event_handler(button, on_click) > > > > you can do > > > > handler = lambda { |sender, e| puts “Click!” } > > button.on_click.add handler > > button.on_click.remove handler > > > > or just > > > > button.on_click { |sender, e| puts “Click!” } > > > > if you don’t need to remove the handler. > > > > Tomas > > > > > > *From:* ironruby-core-boun...@rubyforge.org [mailto: > ironruby-core-boun...@rubyforge.org] *On Behalf Of *Jimmy Schementi > *Sent:* Tuesday, August 04, 2009 12:15 PM > > *To:* ironruby-core@rubyforge.org > *Subject:* Re: [Ironruby-core] Getting a delegate in IronRuby > > > > I believe that commit is the one that didn't get into the binary build of > 0.9.0, but is (strange enough) tagged with 0.9 in GitHub. Thanks for > pointing that out though. > > > > *From:* ironruby-core-boun...@rubyforge.org [mailto: > ironruby-core-boun...@rubyforge.org] *On Behalf Of *Martin Smith > *Sent:* Tuesday, August 04, 2009 12:05 PM > *To:* ironruby-core@rubyforge.org > *Subject:* Re: [Ironruby-core] Getting a delegate in IronRuby > > > > 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 > >
_______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core