#vb.net #vb6 #activex #com-interop #vb6-migration
#vb.net #vb6 #activex #совместное взаимодействие #vb6-миграция
Вопрос:
Недавно я пытался создать элемент управления ActiveX и использовать его в некоторых vb.net код. После долгих усилий я создал свой элемент управления в vb6 и сгенерировал файл ocx. Я пытался использовать его, как показано в документах Microsoft здесь, но безрезультатно. На :
myActiveX = New MyActiveXComponent.MyClass()
я продолжаю получать
MyActiveXComponent.MyClass.Частный Sub New() недоступен в этом контексте, потому что он «Частный»
Я могу импортировать его в toolbox и использовать таким образом, но я бы предпочел этого не делать, я использую visual studio 2005. Также у меня есть ocx, который, как я предполагаю, я могу использовать обоими способами (не мой), поэтому я подозреваю, что с моим что-то не так, но я не могу понять, что.
Комментарии:
1. Похоже, что вы создаете экземпляр, если вызывается класс
MyClass
. Это класс, который вы определили в своем ocx?2. @tcarvin Да, пытаясь создать пользовательский элемент управления, в данном случае MyClass, который содержится в ocx, вы можете найти исходный код здесь support.microsoft.com/en-us/help/315847 /… .
3. Это ваше
Sub New
личное? Возможно, так и должно бытьPublic
?4. @ChrisDunaway Я вообще не могу написать sub new в vb6, насколько я знаю, New должно быть внутри оболочки, сгенерированной interop , и оно просматривается в object browser, но оно загружено из System. Object, где в другом рабочем ocx это член класса, почти так же, как это был модуль класса.
Ответ №1:
Вы немного смешиваете классы и элементы управления. Но в любом случае, если вы хотите, чтобы ваш класс был общедоступным, вам нужно установить инстансинг, и я предлагаю использовать MultiUse .
Комментарии:
1.
Class
es в проектах OCX по умолчанию являютсяPublicNotCreatable
.