在设计中显示属性已更改的组件(非默认设置)
本文关键字:组件 默认 设置 显示 属性 | 更新日期: 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();
}