c# - Usercontrol 包含一个组合框,但在设计时设置的 Items 不在运行时

标签 c# windows combobox custom-controls items

我有一个包含文本框和组合框的用户控件。我已将组合框的 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/

相关文章:

windows - PowerShell session 中的字符编码 (UTF-8)

C# 程序列出用户和他们各自的目录路径

javascript - 变化 : change value trough Combo box

带有预先输入和分层项目的 Javascript 组合框

c# - GridView排序和分页

c# - 混淆器 .NET 混淆器。安全吗?

Windows 批处理脚本问题 - 引用包含空格的变量

python - 关闭 PyQt 对话框而不关闭主程序

c# - 从接口(interface)转换的 lambda 表达式

c# - RichTextBox 改变字母颜色 - 速度问题