2008-09-28 3 views
3

code ne fonctionne pas ci-dessous comme prévu pour détecter si elle est en mode de conception (VS.Net 2003 - Control Library):Comment détecter le temps de conception dans un VS.NET 2003 projet de bibliothèque de contrôle

si (ce. site! = null & & this.Site.DesignMode == true) {

// design mode
}
autre
{//
d'exécution
}

Il est utilisé dans un contrôle utilisateur complexe, dérivé d'un autre contrôle utilisateur et incluant d'autres contrôles utilisateur.
Existe-t-il un autre moyen de détecter l'heure de conception dans un VS.NET 2003 ou quel est le problème avec le code ci-dessus?

+0

Est-ce dans un constructeur ou un événement? –

+0

il est dans l'événement de gestionnaire de charge. – rovsen

Répondre

6

DesignMode ne fonctionnera pas à l'intérieur d'un constructeur. Certaines solutions de rechange (pas sûr si elles fonctionnent en 1.1) sont

if (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime)

ou

appel GetService(typeof(IDesignerHost)) et voir si elle retourne quelque chose.

J'ai eu plus de chance avec la première option.

+0

if (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime) travaillé. Merci.. – rovsen

0

Je suppose que vous pouvez utiliser HttpContext.Current == null comme décrit à http://west-wind.com/weblog/posts/189.aspx

Dans .Net 2.0, il y a Control.DesignMode (http://msdn.microsoft.com/en-us/library/system.web.ui.control.designmode.aspx). Je suppose que vous avez de bonnes raisons de rester sur VS 2003, donc la mise à jour n'est peut-être pas une option pour vous.

Mise à jour Si vous utilisez Winforms, Component.DesignMode (http://msdn.microsoft.com/en-us/library/system.componentmodel.component.designmode.aspx) est le bon moyen de vérifier. Bien que, si this.Site.DesignMode ne fonctionne pas correctement, Component.DesignMode peut ne pas fonctionner aussi bien, car il fait exactement la vérification que vous faites (Site! = Null & & Site.DesignMode).

Cela peut être long, mais êtes-vous sûr que votre contrôle de base ne remplace pas la propriété Site?

+0

Pour HttpContext; c'est une application winform, pas web. Pour rester sur VS 2003; pour l'instant ce n'est pas une option malheureusement. – rovsen

+0

Component.DesignMode pris en charge dans: 3.5, 3.0, 2.0. Le logiciel fonctionne sur Framwrork 1.1. Merci pour votre intérêt. – rovsen

+0

Selon la page MSDN de Component.designMode, cette propriété existe depuis la version 1.0. –

Questions connexes