1

首先,感谢您花时间阅读我的问题。

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

  • 自动完成自定义源
  • 自动完成模式
  • 自动完成源

我为尝试隐藏这些属性而开发的代码是:

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

我使用的来源是:

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

再次感谢您借给我时间。

4

1 回答 1

0

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

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

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

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

于 2014-10-29T22:05:07.280 回答