在设计中显示属性已更改的组件(非默认设置)

本文关键字:组件 默认 设置 显示 属性 | 更新日期: 2023-09-27 18:20:09

我的组件有点问题。这看起来像我的财产:

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;
...

(类视图类型)

public enum ViewType
        {
            Week,
            Month,
        }

当我把我的组件添加到应用程序时,它看起来很好。我有默认的周,我的组件是在设计绘制周外观。但当我把它改为Month时,在Design中它显示得很糟糕,在kalendar_load(panelKalendar.Top = yPoloha + VYSKA_BUNKY)中它得到了第二个if。当我建造它的时候,它还可以。这就是问题所在。为什么设计器使用默认属性而不使用已设置的属性?感谢

在设计中显示属性已更改的组件(非默认设置)

当组件在设计器中时,不调用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();
   }