[IronPython] .NET Events in IronPython

Michael Shilman shilman at microsoft.com
Fri Nov 11 12:58:59 PST 2005


Is there any way to declare .NET events in IronPython?

 

Here is a simple example in C# that "abstracts" a button pressed event
into a "hello" event:

 

    public delegate void HelloInvoked();

    public class HelloControl : Panel

    {

        public event HelloInvoked Hello;

        public HelloControl()

        {

            Button b = new Button();

            b.Text = "Hello";

            b.Click += new EventHandler(b_Click);

            b.Dock = DockStyle.Fill;

            this.Controls.Add(b);

        }

 

        void b_Click(object sender, EventArgs e)

        {

            if (Hello != null) Hello();

        }

    }

 

I can do something equivalent with Python functions:

 

class HelloControl(Panel):

     Hello = []

     def __init__(self):

          b = Button(Text="Hello",Dock=DockStyle.Fill)

          b.Click += self.on_Click

          self.Controls.Add(b)

     def on_Click(self,sender,e):

          for h in self.Hello: h()

def Foo(): print "hello"

hc.Hello += [Foo]

 

But for consistency with my other C# code I'd like to use events if
possible. 

 

Any thoughts?

 

Many thanks,

 

Michael

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: /pipermail/users-ironpython.com/attachments/20051111/33121ecd/attachment.html


More information about the users mailing list