Come rilevare i tempi di progettazione in un progetto di libreria di controllo VS.NET 2003

StackOverflow https://stackoverflow.com/questions/144898

  •  02-07-2019
  •  | 
  •  

Domanda

Il codice seguente non funziona come previsto per rilevare se è in modalità progettazione (VS.Net 2003 - Libreria di controllo):

if (this.Site! = null & amp; & amp; this.Site.DesignMode == true)
{
  // Modalità di progettazione
}
altro
{
  // Runtime
}

Viene utilizzato in un controllo utente complesso, derivante da un altro controllo utente e includendo altri controlli utente su di esso.
Esiste un altro modo per rilevare i tempi di progettazione in un VS.NET 2003 o qual è il problema con il codice sopra?

È stato utile?

Soluzione

DesignMode non funzionerà all'interno di un costruttore. Alcune alternative (non sono sicuro se funzionano in 1.1) sono

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

o

chiama GetService (typeof (IDesignerHost)) e vedi se restituisce qualcosa.

Ho avuto più fortuna con la prima opzione.

Altri suggerimenti

Suppongo che potresti usare HttpContext.Current == null come descritto in http: / /west-wind.com/weblog/posts/189.aspx

In .Net 2.0 c'è Control.DesignMode ( http://msdn.microsoft.com/en-us/library/system.web.ui.control.designmode.aspx ). Immagino che tu abbia buone ragioni per rimanere su VS 2003, quindi l'aggiornamento potrebbe non essere un'opzione per te.

Aggiorna Se stai eseguendo Winforms, Component.DesignMode ( http://msdn.microsoft.com/en-us/library/system.componentmodel.component.designmode.aspx ) è il modo giusto per verificare. Tuttavia, se this.Site.DesignMode non funziona correttamente, Component.DesignMode potrebbe non funzionare altrettanto bene, poiché fa esattamente il controllo che stai facendo (Site! = Null & amp; & amp; Site.DesignMode).

Potrebbe essere un colpo lungo, ma sei sicuro che il tuo controllo di base non abbia la precedenza sulla proprietà del Sito?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top