在WinForms编程中,我们经常会用到UserControl或者编写自己的Control,但是,当我们为Control定义一个属性的时候,不希望控件的使用者通过设计器对控件的该属性进行赋值。更显而易见的一个问题是,设计器会为该属性生成缺省的赋值代码,有时候,这样的赋值代码有时会导致该控件以及使用了该控件的其他控件或窗口无法在设计器中打开。这个时候,给该属性加上Browsable和DesignerSerializationVisibility属性就可以解决这个问题。
示例代码如下:
//使用时记得 using System.ComponentModel;
private decimal m_customerId;
//Browsable使该属性对于属性查看窗口不可见,这样控件的使用者无法使用设计器给该属性赋值
[Browsable(false)]
//使设计器无法看到该属性,并不会为此属性生成缺省的赋值代码
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public decimal CustomerId
{
get
{ return m_customerId; }
set
{ m_customerId = value; }
}