考虑一个具有属性 Rows 的自定义控件:
private EMRow[] _rows;
public CustControl()
{
InitializeComponent();
}
public EMRow[] Rows
{
get
{
return _rows;
}
set
{
_rows = value;
}
}
每个 EMRow 创建一个 TextBox 并公开两个属性,一个用于 Text,另一个用于控件本身:
private TextBox _txtValue;
public EMRow()
{
if (_txtValue == null)
_txtValue = new TextBox();
}
public string Value
{
get
{
return _txtValue.Text;
}
set
{
_txtValue.Text = value;
}
}
public TextBox ValueTextBox
{
get
{
return _txtValue;
}
set
{
_txtValue = value;
}
}
如果将此自定义控件拖放到窗体上并修改 Value 属性,它会更新并保护对 Designer.cs 文件的更改。
当您深入研究 ValueTextBox 属性(同样,所有这些都在 Visual Studio 设计器中,而不是代码中)并修改属性时,更改不会保存到 Designer.cs 文件中。就设计者而言,甚至没有创建和引用此属性的 TextBox 对象。
我确信这是“预期的”行为,但我不知道为什么。我在这里错过了 VS 设计师的基础知识吗?