Ответ 1
Проверьте, соответствует ли DesignMode значение true или false. Это свойство, которое принадлежит базовому классу управления.
У меня есть класс (control), реализующий ICustomTypeDescriptor, который используется как во время разработки, так и во время выполнения PropertyGrid для настройки. Мне нужно выставлять разные свойства во время разработки (стандартные свойства управления, такие как width
, height
и т.д.) И во время выполнения, когда PropertyGrid используется в моей программе для изменения других свойств этого элемента управления.
Мой код похож:
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;
}
}
}
Есть ли аналог для флага времени разработки в С#? Может быть, лучше использовать условную компиляцию?
Проверьте, соответствует ли DesignMode значение true или false. Это свойство, которое принадлежит базовому классу управления.
Флаг должен быть DesignMode
. Следовательно, ваш код должен выглядеть следующим образом
public PropertyDescriptorCollection GetProperties()
{
//I need to do something like this:
if (this.DesignMode)
{ //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;
}
}
Ниже приведен соответствующий документ MSDN.
Используйте свойство DesignMode
базы. Это расскажет вам о режиме.