2009-12-31 7 views
0

ont vraiment du mal à développer du code pour un ensemble de UserControls qui utilisent un héritage assez rudimentaire. Fondamentalement, il s'agit de trois vues de détail différentes qui héritent toutes d'une seule classe de base qui, à son tour, implémente une seule interface.Les erreurs IDE Visual Studio 2008 avec Inherited UserControls

Interface IBaseDetailView

Classe BaseDetailView Met en oeuvre IBaseDetailView

Classe DetailView1: Hérite BaseDetailView Classe DetailView2: Hérite BaseDetailView Classe DetailView3: Hérite BaseDetailView

J'ai un UserControl composite qui ajoute l'individu DetailViews 1-3 sur un onglet du TabControl.

Assez simple. Tout compile bien, tous les UserControls sont disponibles dans la boîte à outils et peuvent être glissés et déposés sur n'importe quel formulaire. Mais il y a un problème ...

Ils affichent initialement et quoi non, mais après avoir compilé les erreurs de formulaire avec l'erreur tristement célèbre "Instance de l'objet non mis en référence". Maintenant, pour un peu plus d'infos ... Si je commente les événements Form_Load dans chacune des classes concrètes/dérivées de DetailView, cette erreur disparaît et le formulaire peut être visualisé en mode design. Les événements Form_Load ont des appels ado.net vers un serveur sql qui semblent déclencher les erreurs.

Avec les événements Form_Load, je ne reçois aucune erreur lors de la compilation et je peux exécuter les applications sans problème en mode debug ou release. Je ne peux pas afficher les formulaires avec les UserControls dans DesignMode.

J'ai ajouté les événements If Me.DesignMode Then Return aux événements Form_Load mais cela n'a pas fonctionné. Je pense que VS2008 essaye actuellement d'exécuter le code dans les UserControls ... J'ai googlé ceci mais je n'ai pas trouvé une solution. Toute aide est très appréciée!

Répondre

0

Mettez une valeur nulle dans les propriétés/champs dans la méthode Form_Load. Nous avons eu des problèmes similaires car le concepteur semble utiliser FormLoad au moment de la conception, pas ce que vous attendez.

Il existe également une propriété DesignMode que vous pouvez utiliser.

J'espère que cela aide.

+0

Merci Burt! J'ai vérifié la propriété designmode sur le (s) contrôle (s) mais il serait faux pour une raison loufoque ... J'essaierai d'utiliser les vérifications nuls ... – bbqchickenrobot