i Mise en place d'une grande forme dans Winforms C # avec Visual Studio 2008. Après avoir fonctionné bien pour une grande partie de la boîte de dialogue, il commence à afficher beaucoup d'erreurs MASSEGES comme dans le titre lorsque j'essaie d'ouvrir le concepteur. P>
"La variable est non déclarée ou n'a jamais été attribuée" p> blockQuote>
Je l'ai eu pour beaucoup de contrôles qui fonctionnaient bien avant. Je pense que cela se produit avec le contrôle personnalisé que j'utilise p>
8 Réponses :
Vérifiez votre fichier de concepteur.cs. Cela peut être des déclarations de contrôle manquantes. P>
Votre code est-il construit et exécuté? P>
Ouais ... Seul l'auteur ne spécifie pas la langue utilisée :)
Il dit c # - "J'ai implémenter une grosse forme dans Winforms C #"
Merci pour la réponse. Oui, le code compile et exécutent. Comment vérifier les concepteurs.cs? Quelles déclarations de contrôle doivent être faites? Slip
La première recommandation est Le concepteur utilise le code de constructeur pour afficher le formulaire et si vous avez des erreurs, votre formulaire sera "non insistuble" dans le concepteur VS. P>
Deuxièmement, chaque fois que vous rencontrez des problèmes dans le concepteur, fermez-le et reconstruisez le projet de votre formulaire. Vérifiez les erreurs et les avertissements dans la fenêtre Liste d'erreurs. Après la fixation, rouvrez votre formulaire en mode Desig. P>
Je n'ai que des initialisés dans le constructeur
J'ai eu cette même variable "variable est non déclarée ou n'a jamais été attribuée" pour une variable déclarée et attribuée dans un service de service Windows de VS 2010.net 4, et fais cela "chaque fois que vous avez des problèmes dans le concepteur, fermez-le et reconstruisez votre le projet de forme. " s'est occupé de la question pour moi. Merci serhio.
J'ai trouvé une solution de travail: p>
Le problème initial s'est produit lorsque mes commandes personnalisées et ma boîte de dialogue étaient dans la même DLL / projet / ensemble. P>
J'ai créé une DLL de contrôle Windows séparée pour tout le contrôle personnalisé et ... Le concepteur a montré la boîte de dialogue. P>
Je crois avoir vu le même problème et je pense que c'est un bogue dans vs. De temps en temps (je ne suis pas sûr des circonstances exactes), même créer une forme complètement nouvelle et vide et l'ajout d'un seul contrôle personnalisé entraînera une explosion du concepteur de la manière dont vous décrivez. Copier et coller le code pour le contrôle personnalisé dans un nouveau projet vide et l'ajout à une nouvelle forme, le problème n'apparaît pas.
Le concepteur ne génère pas la ligne près du sommet de En fait, si j'insère manuellement la ligne ci-dessus, elle est supprimée lorsque le projet est reconstruit. P> RECHERCHE Dans mes projets précédents, je peux voir que le bogue était présent dans VS2005 et je l'obtiens toujours aujourd'hui à VS2010. Mon code précédent est poivré de bits comme celui-ci: p> inutile de dire que le concepteur fonctionne la plupart du temps. Je n'ai trouvé aucun moyen de reproduire systématiquement le problème, mais de retirer de manière intéressante de la solution et de recréer un avec le même nom + contrôle personnalisé, le problème est toujours là. P> p> initializecomomonent () code>: p>
Cette erreur s'est également produite pour l'une de nos formulaires et nous avons eu une période très difficile à diagnostiquer ce qui l'a causée. Le code de formulaire était en fait dans des fichiers 3x .cs. La formulaire de base, les concepteurs.CS et le formulaire ont été étendus (il a été déclaré une classe partielle).
SO MYFORM.CS: P>
namespace MyNamespace
{
public partial class MyForm
{
// Some variable declarations
// Some method declarations
}
}
Remarque: Dans mon cas, l'appel à la nouvelle méthode d'un contrôle personnalisé n'était pas dans la méthode Initilaizecomonent dans le fichier de concepteur.cs.
Comme d'autres l'ont dit, vous ne devez avoir aucune logique compliquée dans le constructeur du contrôle de l'utilisateur.
en théorie, l'endroit pour effectuer toutes les initialisations complexes devrait être le gestionnaire d'événements de charge ou le chargement (). Cependant, en VS2010, l'utilisation de l'événement de charge de la commande (ou sur la charge ()) ne suffit pas. p>
Si votre UserControl résidant dans le même assemblage que le formulaire qui l'utilise et que vous souhaitez afficher le formulaire dans le concepteur, VS2010 n'exécute pas uniquement le constructeur de l'UserControl, mais aussi son surcharge () ou événement de chargement. Cela ne semble pas arriver toujours, mais lorsque le concepteur doit reconstruire le formulaire. P>
Donc, si vous avez une logique compliquée là-bas ou utilisez des ressources externes, comme une base de données, elle peut lancer cette erreur lors de l'ouverture du Concepteur pour la forme jointe. C'est mauvais parce que l'utilisation de l'événement de charge devrait être le bon endroit pour le faire. P>
Vous devrez peut-être utiliser une initialisation paresseuse pour toute ressource vitale que vous devez initialiser avant d'exécuter le formulaire. P>
Par exemple: p>
C'est un bug dans l'IDE. Peu importe la façon dont vous le regardez, il existe une façon indéterminée, le constructeur instanciera vos champs et les avoir utilisées comme statique plus tard dans le constructeur.
Par exemple: P>
private void InitializeComponent() {
ComponentResourceManager resources = new ComponentResourceManager(typeof(MainForm));
...
}
Dans mon cas, cela dépend de la plate-forme, je construis le projet pour. Pour X86, tout était juste, mais pour X64, j'ai reçu cette erreur. Donc, ma solution consistait à développer le projet sous Debug / X86, puis à la construire pour toutes les plates-formes cibles requises. P>
Montrez-nous le code et pointez la ligne que le message d'erreur apparaît à.
Copiez toutes les erreurs de texte du concepteur et collez-la ici;)