Ho una classe (controllo), esecuzione ICustomTypeDescriptor, che viene utilizzato sia in fase di progettazione e run-time da PropertyGrid per la personalizzazione. Ho bisogno di esporre le diverse proprietà in fase di progettazione (controlli standard proprietà come width
, height
e così via) e in fase di esecuzione, quando PropertyGrid è usato nel mio programma per modificare altre proprietà di quel controllo.Come sapere se un controllo è in fase di progettazione o no?
Il mio codice è simile:
class MyControl : UserControl, ICustomTypeDescriptor
{
//Some code..
public PropertyDescriptorCollection GetProperties(Attribute[] attributes)
{
return GetProperties();
}
public PropertyDescriptorCollection GetProperties()
{
//I need to do something like this:
if (designTime)
{ //Expose standart controls properties
return TypeDescriptor.GetProperties(this, true);
}
else
{
//Forming a custom property descriptor collection
PropertyDescriptorCollection pdc = new PropertyDescriptorCollection(null);
//Some code..
return pdc;
}
}
}
Esiste un analogico per una bandiera in fase di progettazione in C#? È forse meglio usare la compilazione condizionale?
Stai parlando di wpf o winform? –
Possibile duplicato di * [Come sapere se il codice .NET viene eseguito da Visual Studio Designer] (http://stackoverflow.com/questions/73515/how-to-tell-if-net-code-is-being- run-by-visual-studio-designer) *. –