Как добавить событие OnLoad в WinPorm IronPython? - PullRequest
1 голос
/ 05 августа 2010

У меня проблема с получением события OnLoad, вызываемого из сценария IronPython, который использует WinForms, я уменьшил проблему до минимально возможного случая воспроизведения:

from clr import AddReference, accepts, returns, Self
AddReference("System.Windows.Forms")
AddReference("System.Drawing")</p>

<p>import System
from System.Windows.Forms import *
from System.ComponentModel import *
from System.Drawing import *</p>

<p>class DCCForms: # namespace</p>

<pre><code>class Form1(System.Windows.Forms.Form):
    def __init__(self):
        self.InitializeComponent()

    @returns(None)
    def InitializeComponent(self):           
        self.Name = 'Form1'
        self.Text = 'DCC'
        self.Load += self._Form1_Load
        self.ResumeLayout(False)
        self.PerformLayout()

    @accepts(Self(), System.Object, System.EventArgs)
    @returns(None)
    def _Form1_Load(self, sender, e):
        pass

класс WindowsApplication10: # пространство имен
@staticmethod def RealEntryPoint (): Application.EnableVisualStyles () Application.Run (DCCForms.Form1 ())

WindowsApplication10.RealEntryPoint ();

При запуске я получаю сообщение об ошибке «Ошибка типа: объект не вызывается». для строки self.Load + = self._Form1_Load. Я также получил ту же ошибку при попытке изменить текстовое поле, однако добавление обработчика OnClick для кнопки работает. Код, написанный выше, был изменен из сценария IronPython 1.1.2, сгенерированного из студийного образца IronPython из Visual Studio 2008 SDK. Тем не менее, я запускаю его на Iron Python 2.6.1 из экземпляра PyDev.

Если я удаляю оператор Load, форма генерируется и реагирует на события OnClick, если указано.

...