Je voudrais aller très heureux de .NET -> VB 6.0 en utilisant la Interop Forms Toolkit 2.0 de Microsoft pour exactement cet effet. Je l'ai fait plusieurs fois. Aller dans l'autre sens pourrait être douloureux.
Ce qui préoccupe votre collègue est très réel. Le problème qui se pose est de savoir quel contrôle est ciblé à quel moment et comment certaines personnes sont traitées sous le capot. Un excellent exemple de ceci est la tabulation à travers les contrôles.
Considérez que vous avez une forme .NET avec des contrôles .NET et une VB 6 active X. Cet ActiveX aurait également des contrôles en elle. Maintenant que vous onglet dans votre formulaire .NET, quand vous arrivez à l'onglet ActiveX alors vous attendre à travers tous les contrôles dans ActiveX, mais vous ne faites pas! Vous allez tabuler sur l'ensemble du contrôle ActiveX à la fois. C'est un problème.
Maintenant, si vous allez dans l'autre sens, .NET dans Visual Basic 6.0, vous devez répondre pour le comportement dans votre code. Ce CodeProject article, a une excellente classe appelée ActiveXHelpers qui fait exactement cela. Mais fondamentalement, il s'agit de gérer manuellement l'événement KeyPressed, en vérifiant un onglet ou shift + tab, et la mise au point manuellement le contrôle suivant/précédent.
Maintenant, dans votre situation, vous devez modifier le code VB 6 pour qu'il se comporte comme ceci. Il sera probablement moins d'effort pour réécrire le contrôle dans .NET. Je n'ai jamais connu et rafraîchi les problèmes, mais comme je l'ai dit, je suis seulement allé .NET -> VB pas l'inverse. D'une manière ou d'une autre, il y aura probablement beaucoup de douleur et vous aurez probablement d'autres problèmes, comme le fait de couler des événements et de faire la différence entre la conception et l'exécution dans VB.
+1 Question intéressante. Il sera particulièrement intéressant de voir des réponses relatant l'expérience réelle de l'utilisation d'un OCX qu'ils ont écrit en VB6 sur un formulaire .NET. – MarkJ
Je me demande s'il existe des différences selon la version de .NET que vous utilisez. –