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

Reply via email to