Crad's .NET Blog

L'UGIblog di Marco De Sanctis
posts - 190, comments - 457, trackbacks - 70

Attenti alla proprietà DesignMode

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

Print | posted on domenica 23 aprile 2006 13:48 | Filed Under [ .Net 2.0 Visual Studio Windows Forms ]

Powered by:
Powered By Subtext Powered By ASP.NET