Показать компонент с измененным свойством в дизайне (не по умолчанию) - PullRequest
0 голосов
/ 12 января 2012

У меня небольшая проблема с моим компонентом. Это выглядит как моя собственность:

private ViewType _viewType = ViewType.Week;
        public ViewType DisplayType
        {
            get { return _viewType; }
            set
            {
                _viewType = value;
                if (panelKalendar != null)
                    panelKalendar.Invalidate();
            }
        }

и это у меня в Kalendar_Load ():

...
if (this._viewType == ViewType.Month)
                panelKalendar.Top = yPoloha;
            else if (this._viewType == ViewType.Week)
                panelKalendar.Top = yPoloha + VYSKA_BUNKY;
...

(класс ViewType)

public enum ViewType
        {
            Week,
            Month,
        }

когда я добавляю свой компонент в приложение, оно выглядит нормально. У меня есть неделя по умолчанию, мой компонент находится в режиме рисования с недельными образами. Но когда я изменяю его на Месяц, в Design он отображается плохо, он получает второе значение, если в kalendar_load (panelKalendar.Top = yPoloha + VYSKA_BUNKY). Когда я его построил, все нормально. И это проблема. Почему конструктор использует свойство по умолчанию, а не то, которое установлено? Спасибо

1 Ответ

1 голос
/ 12 января 2012

Load не вызывается, когда компонент находится в конструкторе. Код в свойствах и в конструкторе есть. Если вы хотите, чтобы изменение свойства viewType привело к изменению конструктора, вам нужно будет использовать свой код, когда свойство установлено. А не во время загрузки. Это также должно работать для вас во время выполнения.

Я бы создал такой метод:

private void UpdateViewType()
{
 if (this._viewType == ViewType.Month)
                    panelKalendar.Top = yPoloha;
                else if (this._viewType == ViewType.Week)
                    panelKalendar.Top = yPoloha + VYSKA_BUNKY; 
}

, а затем в свойстве, когда значение установлено, вызвать его

... 
 set
   {
     _viewType = value;
     UpdateViewType()
     if (panelKalendar != null)
         panelKalendar.Invalidate();
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...