未进入setter的类型class的属性
本文关键字:类型 属性 class setter | 更新日期: 2023-09-27 18:05:27
我有一个名为SightGlass的用户控件:
public SightGlassData SightGlass
{
get
{
return _sightGlass;
}
set
{
//This code is never entered!
_sightGlass = value;
CalculateSightGlassRect();
}
}
SightGlassData
类定义如下,使用类型转换器在设计时允许在Visual Studio的属性窗口中编辑单个属性:
[TypeConverter(typeof(ExpandableObjectConverter))]
public class SightGlassData
{
//Various public properties in here...
}
问题:我在设计时将用户控件添加到Visual Studio中的窗体中。在设计时从Visual Studio的属性窗口编辑用户控件的属性SightGlass
中的子属性时,该属性按预期更改,但未输入用户控件中属性的setter
这意味着函数CalculateSightGlassRect()
永远不会被调用,因此我不能在设计时可视化地更新我的用户控件。
我认为我需要向SightGlassData类添加一个事件,当属性被更改时触发(然后用户控件将订阅此事件),但显然这种事件仅用于运行时使用。
问题:我如何确保main
属性的setter被调用,而不仅仅是sub
属性在类中的setter ?
我猜你在做这样的事情:
SightGlass.Property = value;
此操作不涉及setter。您正在使用get
访问SightGlassData
值,并使用set
访问它的一个属性。如果您想要执行SightGlass
属性的setter,您可以这样做:
SightGlass = new SightGlassData();