我有一个包含文本框和组合框的用户控件。我已将组合框的 Item 属性暴露给用户控件的客户端,因此:
public System.Windows.Forms.ComboBox.ObjectCollection Item
{
get { return baseComboBox.Items; }
}
我将用户控件添加到 Windows 窗体,并使用窗体设计器中的属性值编辑器设置项目列表。然后我运行应用程序,组合框的下拉列表是空的。为了确认设计时添加的项目不在列表中,我在客户端表单中添加了以下两行代码:
textBox1.Text = userControl1.Items.Count.ToString();
userControl1.Items.Add("Test item");
当我重新运行应用程序时,测试框显示计数为 0(零),并且用户控件的下拉列表仅包含“测试项”。
考虑到在设计时引用的用户控件实例可能与在运行时引用的实例不同,我在设计时设置了用户控件的 BackColor 属性。当我重新运行应用程序时,用户控件的 BackColor 是我在设计器中设置的。
关于为什么 Items 的设计时设置没有延续到运行时的任何想法?
最佳答案
你需要一个属性:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ComboBox.ObjectCollection Item {
get { return baseComboBox.Items; }
}
关于c# - Usercontrol 包含一个组合框,但在设计时设置的 Items 不在运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27004541/