J'ai passé le dernier jour à écrire une bibliothèque de contrôle simple dans VB.NET à utiliser dans un projet vb6 existant. J'ai la plupart des choses qui fonctionnent; mes contrôles apparaissent dans la boîte à outils vb6, les événements fonctionnent, etc. Mon problème actuel est d'essayer de passer des objets complexes entre vb6 et .NET.Marshaling types de données complexes entre .NET et COM
Par exemple, la propriété Font d'un .NET TextBox. Maintenant, vb6 utilise des objets stdFont et .NET (évidemment) utilise le type System.Drawing.Font. Mon objectif avec ce projet est de rendre le changement transparent du coté de vb6. Je voudrais émuler complètement l'interface vb6 pour chaque contrôle afin de minimiser le code qui doit changer lorsque nous ajoutons les nouveaux contrôles, mais je suis coincé ici. Voici un exemple (.NET):
Public Overloads Property Font() As stdole.StdFont
Get
Return ???
End Get
Set(ByVal value As stdole.StdFont)
Dim style As FontStyle = GetFontStyle(value)
TextBox1.Font = New Font(value.Name, value.Size, style, GraphicsUnit.Pixel, value.Charset)
End Set
End Property
Comme vous pouvez le voir, le 'getter' est le problème. Comment puis-je imiter l'interface vb6 ici si je ne peux pas retourner la propriété Font de la zone de texte? Je ne veux pas renvoyer une copie stdFont du System.Drawing.Font pour des raisons évidentes.
Maintenant, je pourrais juste ajouter des méthodes comme SetBold(), SetItalic(), et SetFont() (ou des propriétés booléennes comme "FontIsBold"), mais c'est exactement ce que j'essaie d'éviter. Mon expérience d'interopérabilité est assez minime, donc toute aide ici serait appréciée.
Maintenant, vous voyez que sur le côté VB6, vous devez redéfinir un objet de police entier sur UserControl, ne peut pas simplement changer une propriété sur la police. – user2359723