【问题标题】:VB.Net - Shadows do not hide the original propertyVB.Net - 阴影不隐藏原始属性
【发布时间】:2015-08-07 19:27:26
【问题描述】:

我用两个 ComboBox 创建了一个特定的用户控件,继承自 UserControl

Public Class CodLibCombo : Inherits System.Windows.Forms.UserControl

然后我需要一个特定的“启用”属性,可以启用里面的两个 ComboBox。所以我尝试使用“阴影”和“覆盖”来重新定义它:

Public WriteOnly Shadows Property Enabled() As Boolean
    Set(ByVal Value As Boolean)
        cbo1.Enabled = Value 
        cbo2.Enabled = Value 
    End Set
End Property

但问题是,当我实例化新对象时,我得到了两个“已启用”属性。

请帮忙!

【问题讨论】:

  • 不要继承 UserControl,而是继承 ComboBox 或简单地继承 Control。
  • Enabled 属性未声明为虚拟您不能覆盖它。如果你隐藏它,是的,每个声明的类型都有两个属性。即CodLibCombo.EnabledControl.Enabled 是不同的
  • @Sriram Sakthivel,所以你认为即使我尝试从 ComboBox 或 Control 继承,我也会得到相同的结果?
  • 你想达到什么目的?为什么需要再添加一个 Enabled 属性?
  • 对不起,我刚刚添加了更多细节

标签: .net vb.net inheritance overriding


【解决方案1】:

您不需要创建自己的 Enabled 属性,因为这是在基类中处理的。如果控件的 Enabled 属性设置为 False,则用户控件中的所有控件也将设置为 False。不需要代码。

请注意,默认情况下,控件的 Enabled 属性在设计时仅在运行时没有可见效果,因此您需要运行程序以查看更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 2013-08-15
    • 1970-01-01
    相关资源
    最近更新 更多