从Visual Studio Designer / Properties窗口隐藏继承的公共属性

时间:2014-10-29 21:52:01

标签: c# winforms visual-studio designer browsable

首先,感谢您抽出宝贵时间阅读我的问题。

我在这个问题上花了很多时间没有成功。我创建了一个继承自TextBox的Custom TextBox。 Custom TextBox提供了更高级的建议下拉菜单,具有更好的过滤功能。自定义TextBox工作得很漂亮,但我想从Visual Studio的“属性”窗口中隐藏与原始建议菜单相关的属性:

  • AutoCompleteCustomSource
  • AutoCompleteMode
  • AutoCompleteSource

我试图隐藏这些属性的代码是:

    [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; }

我使用的来源是:

仍会显示属性。请提供一个工作示例或参考一个。

再次感谢您借给我时间。

1 个答案:

答案 0 :(得分:0)

在实际代码中,您是否真的使用new关键字来允许声明的属性隐藏基类属性?

如果是这样,那么我最有可能的是,VS Designer中显示的属性不是您自己的属性,而是基类属性。

请注意,这只会在您更改属性的可访问性时发生(例如,基类属性为public但您自己的派生类属性为private)。

再举一个例子,说明为什么隐藏继承成员几乎总是错误的。