C#在运行时停止属性更改

Pet*_*teT 2 c# user-controls properties

我一直在尝试使用设计器中设置的一些自定义属性来构建用户控件.但是,控件涉及一些不应在运行时调整的互操作代码和设置.有没有办法在设计师代码最初设置后停止更改的值?

Mic*_*tta 6

你能修改属性定义吗?一种方法是,向属性setter添加一个sentinel,并且只允许一个set操作(通常由InitializeComponent()完成):

private int _myProperty;
private bool _isMyPropertySet = false;
public int MyProperty
{
    set
    {
        if (!_isMyPropertySet)
        {
            _isMyPropertySet = true;
            _myProperty = value;
        }
        else
        {
            throw new NotSupportedException();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)