我想创建一个只能在设计时设置的自定义控件属性吗?
答案 0 :(得分:2)
是...在您的班级中,创建一个私人字段,以确定您的媒体资源是否最初“设置”。然后有你的标准属性getter和setter。但是,在setter中,使用许可证管理器检测您在...设置时间与运行时间下运行的模式。然后检查。如果在设计时,则始终允许,或者如果尚未设置该字段。进入后,将标志设置为已设置。这将是必需的,因为在表单设计器实例化控件期间,它必须至少从.Designer.cs代码设置为ONCE,但在此之后,忽略任何更改它的尝试 - 通过设置标志。
private Boolean IsCreated = false;
private String myVar1;
public String MyVar1
{
get { return myVar1; }
set {
if (LicenseManager.UsageMode == LicenseUsageMode.Designtime
|| !IsCreated)
{
myVar1 = value;
IsCreated = true;
}
}
现在,您仍然可以允许更改,但是您必须通过在您的类中创建的自定义方法来执行此操作,因为“IsCreated”标志是PRIVATE而不是PROTECTED用于继承子进程。您必须清除该标志,然后重置为您的属性要保留的新字符串(或其他)值