У меня есть тестовая программа, которая работает во встроенном движке IronPython в нашем приложении C #. Некоторые из тестов - это автоматизация пользовательского интерфейса, имитирующая нажатия кнопок и т. Д.
# assume code to find an existing button, 'b' is an instance of System.Windows.Forms.Button
b.OnClick(EventArgs())
У меня проблема в том, что приведенный выше код работает на IPy 2.0.2, а не на 2.6. Читая ссылку ниже, я понимаю, почему она больше не работает.
http://dlr.codeplex.com/Thread/View.aspx?ThreadId=57324
Итак, я создал подкласс Python следующим образом:
class PyButton(Button):pass
Это прекрасно работает, если вы собираетесь создать новый экземпляр PyButton и попробовать OnClick (). Однако в моем случае мне нужно выполнить OnClick для существующей кнопки. По сути, я хочу сделать следующее, чтобы позволить мне смоделировать нажатие на кнопку:
- Получить ссылку на существующие winforms Кнопка
- Приведение / преобразование кнопки в пользовательский подкласс PyButton (для включения OnClick)
- Call OnClick
Я пытался использовать clr.Convert :
import clr
from System.Windows.Forms import *
class PyButton(Button):pass
# assume b = existing button
pb = clr.Convert(b, clr.GetClrType(PyButton))
... но получите эту ошибку:
expected Button_2$2, got Button
input was pb = clr.Convert(b, clr.GetClrType(PyButton))