Bonjour,
Je commence souvent mes messages par "Avec Cocoa sous MacOS X on fait comme ça...", mais c'est pour expliquer pourquoi j'ai du mal à retrouver certains concepts avec .NET qui a une approche différente.
Voici :
"Avec Cocoa sous MacOS X", si on crée une sous-classe d'un contrôle (NSView, NSButton, etc...) il est possible de faire lire le fichier .h à InterfaceBuilder (le designer d'interface) pour lui permettre d'intégrer ces nouveaux contrôles. À l'écran, dans le designer, ils ont alors l'aspect de leur superclasse (NSView ou NSButton), mais dans le code, ils sont sous-classés. Il est donc très facile de créer et utiliser de nouveaux contrôles et de redéfinir leur comportement.
J'aimerais faire la même chose en .Net (windows forms) avec Visual Studio 2005.
J'ai essayé la même approche : je crée (à la main) une sous classe de System::Windows::Forms:: Panel, que j'appelle disons MyPanel. Comme je n'ai pas trouvé de moyen d'informer le designer de l'existence de MyPanel.h, je crée un Panel normal dans l'interface, puis, dans le code automatiquement généré, je remplace gcnew System::Windows::Forms:: Panel par gcnew MyPanel; (bien sûr j'ai un #include qui traîne)
Tout marche très bien.
SAUF QUE
Tout marche bien, comme prévu, à l'éxécution. Mais à partir du moment où j'ai modifié le gcnew, le designer n'est plus capable d'afficher la fenêtre contenant le panel. Il me crache des erreurs
"Type MyPanel introuvable, assurez-vous que l'assembly qui contient ce type est référencé. Si ce type est un composant de votre projet de développement, assurez-vous que le projet a été créé comme il se doit"
Alors ma question est : comment faire ?
J'ai lu à droite à gauche que j'aurais tout intérêt à dériver UserControl pour ça (Ajouter > Nouvel élément > Contrôle Utilisateur...) sauf que j'ai le même problème : je n'arrive pas à informer le designer de son existence, et donc je ne sais pas déposer un tel nouveau contrôle dans l'interface sans modifier (et donc invalider) le code sous-jacent.
+
Chacha
Partager