“Ne pourrait pas trouver le type” erreur lors du chargement d'un formulaire dans le Concepteur Windows Forms
J'ai un .NET 2.0 application windows forms, qui fait un usage intensif de la ListView
de contrôle.
J'ai sous-classé le ListView
classe en basé sur un modèle SortableListView<T>
classe, de sorte qu'il peut être un peu plus intelligent sur la façon dont il affiche les choses, et de la sorte elle-même.
Malheureusement, cela semble casser le Visual Studio Concepteur de Formulaires, dans les deux VS2005 et 2008.
Le programme compile et s'exécute correctement, mais lorsque j'essaie d'afficher le propriétaire de formulaire dans le concepteur, j'obtiens ces Erreurs:
- Ne pourrait pas trouver le type 'MyApp.Les contrôles.SortableListView'. Assurez-vous que l'assembly qui contient ce type est référencé. Si ce type est une partie de votre projet de développement, assurez-vous que le projet a été construit avec succès.
Il n'y a pas de trace de la pile ou de l'erreur de la ligne d'information disponible pour cette erreur
- La variable "listViewImages' est soit noir ou n'a jamais été attribué.
À MyApp.Principal.Le concepteur.cs Ligne:XYZ Colonne:1
Call stack:
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error(IDesignerSerializationManager manager, String exceptionText, String helpLink)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement)
La ligne de code en question, c'est où qu'il soit ajouté à la forme, et est
this.imagesTab.Controls.Add( this.listViewImages );
listViewImages est déclarée comme
private MyApp.Controls.SortableListView<Image> listViewImages;
et est instancié dans le InitializeComponent
méthode comme suit:
this.listViewImages = new MyApp.Controls.SortableListView<Image>();
Comme mentionné précédemment, le programme compile et fonctionne parfaitement, et j'ai essayé de déplacer le SortableListView
classe à une autre assemblée, de sorte qu'il peut être compilé séparément, mais cela ne fait aucune différence.
Je n'ai aucune idée de l'endroit où aller à partir d'ici. Toute aide serait appréciée!
Vous devez vous connecter pour publier un commentaire.
Il m'est arrivé à cause de x86 /x64 architecture.
Depuis Visual Studio (le développement de l'outil lui-même) n'a pas de version 64 bits, il n'est pas possible de charger x64 contrôle en GUI designer.
La meilleure approche serait de paramétrage interface graphique sous x86, et de le compiler pour x64 si nécessaire.
Non, j'ai juste édité
Main.Designer.cs
et il a changé d'System.Windows.Forms.ListView
àMyApp.Controls.SortableListView<Image>
Soupçonner qu'il pourrait avoir été due à des médicaments génériques, m'a amené à réellement trouver une solution.
Pour chaque classe que j'ai besoin de faire un SortableListView pour, j'ai défini une "de la classe de stub' de cette
Ensuite fait le
Main.Designer.cs
fichier, reportez-vous à ces stub classes au lieu de laSortableListView
.Il fonctionne maintenant, hourra!
Heureusement, je suis en mesure de le faire parce que tous mes types sont connus à l'avant, et je suis le seul à l'aide de la
SortableListView
comme une méthode de réduction de code en double.J'ai eu un problème comme celui-ci (tho pas la même) dans le passé où mon contrôle était dans un espace de noms différent de ma forme même quand il était dans le même projet. Pour le fixer, j'ai dû ajouter un
en haut du code généré par le concepteur de fichier. L'ennuyeux chose était il continuait à s'envoler lorsque le concepteur regénérées à la page.
J'ai eu ce problème aussi, liées à la fusion massive SVN changements (les conflits) dans le *.Le concepteur.cs fichier. La solution est de simplement ouvrir la vue de la conception graphique, modifier un contrôle (le déplacer vers la gauche puis sur la droite) et réenregistrez le design. L' *.Le concepteur.cs fichier magiquement changé, et la mise en garde s'en alla sur la prochaine compilation.
Pour être clair, vous avez besoin pour résoudre tous les code de problèmes de fusion de la première. C'est juste un travail autour de la force de VS de les recharger.
L'assembly qui contient MyApp.Les contrôles.SortableListView n'est pas installé dans le GAC, par hasard, est-il?
lorsque vous avez ajouté la liste, avez-vous l'ajouter à la boîte à outils, puis l'ajouter à l'écran?
Peut-être que vous avez oublié d'ajouter que:
J'ai eu le même problème. Après le retrait de certains de mes propres contrôles de l' *.Le concepteur.cs-Fichier le problème a été résolu. Après de revenir à l'original du code de résoudre le problème a été résolu. Donc, il semble y avoir un problème avec Visual Sudio cache. Pour le moment je ne peut pas reproduire ce problème.
Si vous avez le problème, essayez de vide le dossier
C:\Users\YOURNAME\AppData\Local\Microsoft\VisualStudio\VERSION\Designer\ShadowCache
Fait-il?
J'ai eu quelque chose de semblable - un contrôle utilisateur est en se référant à une distance prolongée (que je ne peux pas garantir d'être disponible au moment de la conception).
Ce post sur MSDN m'a suggéré d'ajouter
à la Charge de la fonction de contrôle, ou dans mon cas, au point avant la WCF client a été initialisé. Qui a fait le tour.
Donc
devient
J'ai eu le même problème. Dans mon cas, ce problème était dû à des ressources d'initialisation. J'ai déplacé le code suivant à partir de
InitializeComponent
méthode pour ctor(Après l'appel deInitializeComponent
). Après que ce problème a été résolu:Dans mon cas, le problème était le nom du dossier de mon projet! Pourquoi je pense à ceci:
J'utilise SVN et dans le trunk\SGIMovel' fonctionne parfaitement. Mais dans une branche dossier nommé 'OS n ° 125\SGIMovel" je ne peux pas ouvrir le concepteur de formulaire qui utilise un contrôle personnalisé et travaille dans le dossier trunk.
Juste sortir de la # et travaille à nice.
Merci pour rien.