111,082
社区成员




winform的自定义控件,通过List管理里边的Textbox。通过代码在运行时动态加载没有问题。但是在DesignMode进行预设就会各种报错。
public partial class TestControl : UserControl
{
private List<TestItem> items;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), MergableProperty(false)]
public List<TestItem> Items
{
get { return items; }
set
{
Init(value);
}
}
public TestControl()
{
InitializeComponent();
items = new List<TestItem>();
}
private void Init(List<TestItem> value)
{
if (value == null || value.Count == 0) return;
int index = 0;
TextBox tb = null;
foreach (TestItem ti in value)
{
tb = new TextBox();
tb.Text = ti.Value;
tb.Width = 100;
tb.Left = index * 100;
this.Controls.Add(tb);
index++;
}
items = value;
}
}
[Serializable]
public class TestItem
{
public TestItem() { }
public string Text { get; set; }
public string Value { get; set; }
}