你可以用几种不同的方式来做。首先,我对您创建一个继承自 ComboBox 的“用户控件”感到有些困惑。您可以创建从 ComboBox 继承的自定义控件,但不能同时从 UserControl(这是“用户控件”的通常定义)和 ComboBox 继承。
如果您定义一个真正的 UserControl 派生类,这会变得容易一些。就像我说的,UserControl 不能是ComboBox,但它可以有ComboBox。因此,您可以将 ComboBox 拖放到您的 UserControl 表面,然后重新实现您需要能够使用的任何属性,例如 Items。这将允许您将项目重新创建为您选择的集合,可能是强类型列表。唯一的问题是确切地知道你想要重新实现什么;ComboBox 有很多有用的属性,除非您实现修改 UserControl 中包含的 ComboBox 的“传递”属性,否则您将无法在设计器或代码中访问这些属性。
如果您直接从 ComboBox 继承,它在某些方面会变得有点棘手,而在其他方面则更容易。您可以通过定义自己的并使用new
关键词。执行此操作时,您可以更改可见性、类型和其他修饰符。这将阻止将您的控件作为 CustomComboBox(或您命名的任何名称)处理的代码使用基类上的对象数组;他们必须使用您的强类型 Items 数组。您的新属性仍然可以访问旧属性(它需要它才能使其工作)。您还可以免费获得 ComboBox 的所有其他公共属性;你只需要重新实现你想要改变的东西。但是,将您的自定义 ComboBox 引用为任何基类将导致运行时使用对该类有效的 Items 版本;也就是说,对象数组,而不是您的强类型数组。