C# 是否可以创建仅可在设计时设置的自定义控件属性?
可能重复:C# 是否可以创建仅可在设计时设置的自定义控件属性?,c#,winforms,C#,Winforms,可能重复: 我想创建一个只能在设计时设置的自定义控件属性,是否可行?是。。。在类中,创建一个私有字段,以标识属性最初是否已“设置”。然后使用标准属性getter和setter。但是,在setter中,使用许可证管理器检测您在哪种模式下操作。。。设计时间与运行时。然后检查。如果在设计时,或字段尚未设置,则始终允许。输入后,将标志设置为正在设置。这是必需的,因为在表单设计器实例化控件的过程中,必须从.designer.cs代码中至少设置一次,但在此之后,忽略任何更改它的尝试--通过设置标志
我想创建一个只能在设计时设置的自定义控件属性,是否可行?是。。。在类中,创建一个私有字段,以标识属性最初是否已“设置”。然后使用标准属性getter和setter。但是,在setter中,使用许可证管理器检测您在哪种模式下操作。。。设计时间与运行时。然后检查。如果在设计时,或字段尚未设置,则始终允许。输入后,将标志设置为正在设置。这是必需的,因为在表单设计器实例化控件的过程中,必须从.designer.cs代码中至少设置一次,但在此之后,忽略任何更改它的尝试--通过设置标志
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”标志是私有的,不受保护,无法让子继承进行修改。您必须清除该标志,然后重置为属性要保留的新字符串(或任何值)谢谢似乎是同一个问题,请阅读本文。谢谢您提供的代码片段,这将使我更轻松!