我有一个使用C#WinForms制作的自定义UserControl,它通过COM公开给C ++主机应用程序。当我编写和调试UserControl时,我有一个C#测试应用程序,并确保应用程序从这个角度工作。 C#WinForms环境中的C#WinForms控件没有问题。
通过我们的C ++ COM主机应用程序测试时,UI事件不再有效。通过托管C ++应用程序UI进行交互,我可以设置属性并查看托管控件中的响应。但是,当我点击一个控件时,整个应用程序会冻结。我观察到了以下行为:
只要我没有单击托管COM控件中的活动UI组件,它就会正常运行 - 直到COM控件需要创建新标签页的事件发生。
我已尝试设置各种断点,但在我们到达托管的COM控件之前它会冻结,整个应用程序被冻结。可以说更复杂的备用COM控件似乎没有这种行为。
有什么线索是怎么回事?我迷失了,试图找出问题所在。
新信息
整个UserControl的内容位于带有多个选项卡的TabControl中。我在TabControl外部创建了一个按钮,当单击它时,我可以在初始化ComControl时定义的每个页面上与TabControl内的控件进行交互。
但是,如果我创建一个新的TabPage或实例化一个FolderBrowserDialog,我就回到旧的行为。那么,如何在ComControl中安全地使用TabPages?