类型类的属性未进入setter

时间:2014-05-28 11:47:09

标签: c# visual-studio properties

我有一个名为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?

1 个答案:

答案 0 :(得分:0)

我猜你正在做这样的事情:

SightGlass.Property = value;

此操作不涉及设定者。您get SightGlassData set值,SightGlass其中一个属性。如果要执行SightGlass = new SightGlassData(); 属性的setter,可以执行以下操作:

{{1}}
相关问题