rastamath69
Messages postés45Date d'inscriptionvendredi 9 avril 2004StatutMembreDernière intervention 9 novembre 2009
-
13 août 2009 à 13:23
rastamath69
Messages postés45Date d'inscriptionvendredi 9 avril 2004StatutMembreDernière intervention 9 novembre 2009
-
13 août 2009 à 19:00
Bonjour,
Je travaille actuellement avec VS2008.
J'ai créé un UserControl qui dans son constructeur fait appelle à une méthode de DLL (elle utilise un backGroundWorker et une form) pour faire un chargement spécifique .
La compilation fonctionne bien et l'exécution également. Mon souci apparaît uniquement lorsque je veux me servir du designer, ce dernier me fait des erreurs. Il bloque sur la méthode de ma DLL et dit qu'il ne la trouve pas.
Je souhaitais donc savoir si via un #if je pouvais arriver à l'empêcher d'exécuter cette ligne?
Cela donnerai un truc dans ce genre:
public MonUC()
{
InitializeComponent();
//code à exécuter
...
#if ???
//code que je ne veux pas exécuter juste quand j'utilise le designer
#endif
//code à exécuter
}
Pour info "#if RELEASE || DEBUG" ne fonctionne pas vu que le designer exécute forcément le constructeur dans l'un de ces modes.
Merci d'avance!
Rastamath69, plus on travaille , plus on a des problèmes, donc plus on a de chances d'en résoudre!
A voir également:
[C#] empêcher le designer d'exécuter une ligne de code
rastamath69
Messages postés45Date d'inscriptionvendredi 9 avril 2004StatutMembreDernière intervention 9 novembre 20091 13 août 2009 à 19:00
Bonsoir,
Malheureusement cette propriété "DesignMode" est toujours fausse dans un constructeur tout simplement parce qu'elle est déduite de l'interface ISite (une des propriétés de l'interface IComponent, qui est implémenté par tous les contrôles, est de type ISite. C'est ce qui nous permet d'accéder à DesignMode).
Or le constructeur est appelé avant que le control soit associé à un objet de type ISite.
Sinon pour mettre en oeuvre votre méthode il suffirait d'implémenter ceci dans l'événement Load du UserControl.
J'avais essayé ces solutions, mais mon problème venait en fait d'un bug dans VS2008. Un cache listant les signatures de méthodes de ma DLL n'avait pas été remis à jour visiblement. Une suppression manuel du dossier "Debug" puis un ReBuild m'ont permis de m'en sortir!
Merci et bonne soirée!
Rastamath69, plus on travaille , plus on a des problèmes, donc plus on a de chances d'en résoudre!
polaris1970
Messages postés5Date d'inscriptionvendredi 24 novembre 2006StatutMembreDernière intervention20 décembre 2009 13 août 2009 à 17:26
Soit dans ton code :
public MonUC()
{
InitializeComponent();
//code à exécuter
...
if (!DesignMode)
{
//code que je ne veux pas exécuter juste quand j'utilise le designer
}
//code à exécuter
}