У меня есть пользовательский UserControl, созданный на C # WinForms, который предоставляется через COM для хост-приложения C ++.Когда я писал и отлаживал UserControl, у меня было приложение для тестирования на C #, и я убедился, что приложение работает с этой точки зрения.Элемент управления C # WinForms в среде C # WinForms не имеет проблем.
При тестировании через наше хост-приложение C ++ COM события пользовательского интерфейса больше не работают.Взаимодействуя через пользовательский интерфейс приложений C ++, я могу установить свойства и посмотреть ответ в размещенном элементе управления.Однако, когда я нажимаю на элемент управления, все приложение зависает.Я наблюдал за поведением:
- Кнопки
- Страницы вкладок
- Флажки
- Значение вверх / вниз
- Текстовые поля
Пока я не нажимаю на активный компонент пользовательского интерфейса в размещенном COM-элементе управления, он ведет себя нормально - до тех пор, пока не произойдет событие, когда элемент управления COM должен создать новую вкладку.
Я пытался установить все виды точек останова, но он зависает, прежде чем мы перейдем к размещенному COM-элементу управления, и все приложение будет заморожено.Альтернативное управление COM, которое, возможно, является более сложным, похоже, не имеет такого поведения.
Есть какие-нибудь подсказки, что происходит?Я заблудился, пытаясь выяснить проблему.
Новая информация
Содержимое всего UserControl находилось в TabControl с несколькими вкладками.Я создал одну кнопку вне TabControl, и при ее нажатии я мог взаимодействовать с элементами управления внутри TabControl на каждой из страниц, которые были определены при инициализации ComControl.
Однако, если я создаю новыйTabPage или создать экземпляр FolderBrowserDialog Я вернусь к старому поведению.Итак, как мне безопасно использовать TabPages и тому подобное из ComControl?