Как узнать, находится ли элемент управления во время разработки или нет? - PullRequest
15 голосов
/ 16 ноября 2011

У меня есть класс (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;
        }
    }
}

Есть ли аналог флага времени разработки в C #?Может быть, лучше использовать условную компиляцию?

Ответы [ 3 ]

11 голосов
/ 16 ноября 2011

Проверьте, является ли DesignMode истинным или ложным.Это свойство принадлежит базовому классу управления.

8 голосов
/ 16 ноября 2011

Флаг должен быть 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 документ .

3 голосов
/ 16 ноября 2011

Используйте свойство DesignMode базы.Это расскажет вам о режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...