J'écris une DLL .NET pour parcourir tous les contrôles dans un formulaire VB6 passé parref.Comment trouver le type d'un contrôle VB6 dans VB.NET
Jusqu'à présent, il semble fonctionner le code VB.NET:
Public Sub AddFormRefLegacy(ByRef strAppName As String, ByRef objForm As Object)
'update the forms caption
objForm.Caption = FindValue(strAppName, objForm.Name, "", "0", objForm.Caption)
'iterate through all the controls on the form
For Each ctl As Object In objForm.Controls
if TypeOf ctl is Label then
'this doesn't pick up any labels
end if
Next
End Sub
appelé de ce code VB6:
Dim libDD As New Lib.clsDataDictionary
libDD.AddFormRefLegacy "nnne", Me
mais l'opérateur TypeOf ne fonctionne pas. Y a-t-il un autre moyen de trouver le type de contrôle?
Vous comparez des pommes et des oranges. La classe VB.NET Label est une classe .NET, le contrôle Label VB6 est un contrôle ActiveX. La seule approche possible est Marshal.GetIUnknownForObject + Marshal.QueryInterface mais les IID pour ces contrôles ne peuvent être obtenus nulle part que je connaisse. –