在.NET中,我有一个继承控制:
public CustomComboBox : ComboBox
我只是想,除了在基类(ComboBoxStyle.DropDown)指定默认的改变DropDownStyle属性的默认值,另一个值(ComboBoxStyle.DropDownList)。
有人可能会认为,你可以只添加的构造函数:
public CustomComboBox()
{
this.DropDownStyle = ComboBoxStyle.DropDownList;
}
但是,这种方法会混淆在Visual Studio设计。 当设计在Visual Studio中的自定义控制,如果选择ComboBoxStyle.DropDown的DropDownStyle它认为你选择的物业仍然是默认值(从[DevaultValue()]在基ComboBox类),所以也没有一个customComboBox.DropDownStyle = ComboBoxStyle.DropDown行添加到Designer.cs文件。 和混淆的是,你会发现,随着预期一旦跑了屏幕不会做人。
那么你不能覆盖DropDownStyle属性,因为它不是虚拟的,但你可以这样做:
[DefaultValue(typeof(ComboBoxStyle), "DropDownList")]
public new ComboBoxStyle DropDownStyle
{
set { base.DropDownStyle = value; }
get { return base.DropDownStyle; }
}
但随后你会遇到使用“new”声明的细微差别麻烦。 我已经尝试过了,它似乎并没有作为Visual Studio的设计师会从这种方式也和力ComboBoxStyle.DropDown(默认为基类)混淆的工作权利。
是否有任何其他方式做到这一点? 很抱歉的详细问题,很难详细描述。