我有一个名为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?
答案 0 :(得分:0)
我猜你正在做这样的事情:
SightGlass.Property = value;
此操作不涉及设定者。您get
SightGlassData
set
值,SightGlass
其中一个属性。如果要执行SightGlass = new SightGlassData();
属性的setter,可以执行以下操作:
{{1}}