首先,感谢您花时间阅读我的问题。
我在这个问题上花了很多时间,但没有成功。我创建了一个从TextBox继承的自定义TextBox。自定义文本框提供了一个更高级的建议下拉菜单,具有更好的过滤功能。自定义的TextBox工作得很好,但我想从VisualStudio:中的"属性"窗口中隐藏与原始建议菜单相关的属性
- 自动完成自定义源
- 自动完成模式
- 自动完成源
我开发的试图隐藏这些属性的代码是:
[ReadOnly(true)]
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This property is obsolete.", true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
new private AutoCompleteStringCollection AutoCompleteCustomSource { get; set; }
[ReadOnly(true)]
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This property is obsolete.", true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
new private AutoCompleteMode AutoCompleteMode { get; set; }
[ReadOnly(true)]
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This property is obsolete.", true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
new private AutoCompleteSource AutoCompleteSource { get; set; }
我使用的来源是:
- 使Visual Studio设计器忽略公共属性
- 在自定义控件中隐藏不需要的属性
属性仍在显示中。请提供一个工作示例或参考。
再次感谢你把时间借给我。
在实际的代码中,您真的使用new
关键字来允许您声明的属性隐藏基类属性吗?
如果是这样,那么在我看来,VS设计器中显示的属性很可能不是您自己的,而是基类属性。
请注意,只有当您还更改属性的可访问性时才会发生这种情况(例如,基类属性为public
,但您自己的派生类属性是private
)。
这只是为什么隐藏继承成员几乎总是错误的又一个例子。