У меня есть элемент управления winforms, написанный на vb.net для программы VB6. Элемент управления динамически добавляется в коллекцию элементов управления VB6.
Set ctrlVB6 = Controls.Add("NETNamespace.SelVB6", "SelNet")
Если класс .net (SelVB6
) обладает всеми необходимыми свойствами, метод Add возвращает оболочку элемента управления VB6 и элемент управления виден. В противном случае метод Add ничего не возвращает и элемент управления недоступен в VB6.
Класс .net является производным от System.Windows.Forms.UserControl
, который (к счастью) обладает всеми необходимыми свойствами. Класс .net снабжен атрибутом ClassInterface
, чтобы гарантировать, что свойства доступны для COM.
<ClassInterface(ClassInterfaceType.AutoDual)>
Public Class SelVB6
Все работает, но не все свойства System.Windows.Forms.UserControl
видимы, и в VS2010 генерируется множество предупреждений. Чтобы избавиться от предупреждений, мне нужно знать, какие свойства необходимы, определить интерфейс и использовать ClassInterfaceType.None
.
Примечания
Мне не разрешено использовать Interop Forms Toolkit .
Я знаю, что могу перечислить свойства элемента управления Свойства элемента управления в Visual Basic 6 .
Пример предупреждения:
Type library exporter warning processing 'NETNamespace.SelVB6.PreProcessControlMessage(#0)'. Warning: Non COM visible value type 'System.Windows.Forms.PreProcessControlState' is being referenced either from the type currently being exported or from one of its base types. Microsoft.Common.targets