我需要从ComboBox派生一个类并更改其Items属性。这是我的代码:
public class MyComboBox2 : ComboBox
{
private MyObjectCollection MyItems;
public MyComboBox2()
{
MyItems = new MyObjectCollection(this);
}
//new public ComboBox.ObjectCollection Items
new public MyObjectCollection Items
{
get {
return MyItems;
}
}
}
public class MyObjectCollection : ComboBox.ObjectCollection
{
public MyObjectCollection(ComboBox Owner) : base(Owner)
{
}
new public int Add(Object j)
{
base.Add(j);
return 0;
}
}
如您所见,我正在创建一个源自MyComboBox2
的新类ComboBox
。该类应该具有新的Items属性,该属性的类型为MyObjectCollection
而不是ComboBox.ObjectCollection
。我在类型myComboBox21
的表单上有一个名为MyComboBox2
的组合框。当我想在我的ComboBox中添加一个新对象时,我会执行如下代码:myComboBox21.Items.Add("text");
在这种情况下,我最终执行了自己实现的Add
MyObjectCollection
方法。但是,表单上的ComboBox最终不会包含值&text;'。我附加调试器的屏幕截图显示ComboBox值。 MyComboBox21
包含Items
属性(其中包含"文字",如屏幕截图" 2.png"所示),其中包含base.Items
(其中不包含" text"如" 1.png")所示。所以,显然,MyComboBox21
包含自己的Items
属性(我可以插入),以及它的基类Items
属性,它在Windows窗体中显示。我能做什么才能用自己的方法成功添加到comboBox?由于我的ComboBox有2个Items属性,我可以指定哪些Items属性的值应该在ComboBox中显示?
答案 0 :(得分:0)
只需快速查看代码:
原始Item索引声明为
virtual Object this[int index] {...}
new 关键字是否可以通过实现中的 override 进行交换,以使运行时选择目标代码?