2016-06-16 3 views
-1

У меня есть программа VB6. Из этого VB6 я обращаюсь к VB.NET DLL, чтобы запустить форму VB.NET. Есть ли способ для меня нажать кнопку в форме VB.NET и запустить этот триггер функции в VB6?Вызов функций VB6 в VB6 EXE-файле из формы VB.NET в VB.NET DLL

+1

Используйте публичное мероприятие, подписываться в коде VB6. –

+0

Не могли бы вы получить мне образец? благодаря – Xinghua

ответ

0

Основываясь на вашем описании, ваша VB.NET DLL должна уже содержать интерфейс Com, который позволяет вам делать звонки с вашего кода VB6 (найдите свой код для «DispId (1)», поскольку это требуется для компиляции интерфейс). В дополнение к этому вам понадобится отдельный com-интерфейс для событий (если у вас его еще нет). Эти события интерфейса COM позволят вам перейти в другое направление (обратно в VB6) по вашему желанию.

Синтаксис VB.NET для этих двух интерфейсов (один для событий, а другого для методов и свойств), а также класса, который реализует их, наиболее эффективно показан в полном объеме этого ответа: https://stackoverflow.com/a/4502026/3072580

После того как вы» вернитесь в VB6 и у вас есть доступ к объекту, который вы используете для совершения вашего вызова в .NET, вам нужно убедиться, что он объявлен «WithEvents» (Private WithEvents mobjMyComInterop As InteropNamespace.ComInteropObject) или является фактическим контролем помещается в форму VB6 (которая автоматически сменяется). Как только это будет сделано, вы сможете выбрать свой объект .NET из выпадающего списка вверху слева VB6, а затем в правом выпадающем списке вы сможете выбрать событие ...

Это создаст обработчик в VB6 с подписью, как это:

Private Sub mobjMyComInterop_MyEvent (Message ByVal As String)

End Sub