Chi sviluppa componenti con supporto al designer di
VisualStudio, sicuramente si è trovato ad utilizzare la proprietà DesignMode per verificare se il codice sia in esecuzione
nel contesto del designer o a runtime.
Bene, avevo un problema che mi ha portato ad indagare su come funzioni
internamente questa proprietà. Reflector alla
mano ho scoperto che, in un Component...
protected bool DesignMode
{
get
{
ISite site1 = this.site;
if (site1 != null)
return site1.DesignMode;
return false;
}
}
Ora... premesso che, se utilizziamo VisualStudio, a
design time il field site è un'istanza di
System.ComponentModel.Design.DesignerHost.Site e che quel
site1.DesignMode ritorna sempre true, c'è da fare
un'importante considerazione: durante l'esecuzione del costruttore del
Component, DesignMode è SEMPRE false, perché il corrispondente Site non
è stato ancora assegnato.
Inutile dire che ci ho sbattuto il muso poche ore fa , ma senza averlo fatto magari non sarei venuto a
conoscenza di questa sfumatura!
powered by IMHO 1.3