C# 如何重写实现也具有 Enabled 属性的接口的用户控件的 Enabled 属性

问题描述 投票:0回答:1

我有一个实现接口类 IPropertyListItemType 的 UserControl。我希望接口类要求它覆盖控件的 Enabled 属性。在我的接口类中,我有:

bool Enabled { get; set; }

在我的派生类(即 UserControl)中,我目前有:

        bool IPropertyListItemType.Enabled
        {
            get { return _enabled; }
            set 
            {
                _enabled = value;
                lblStatus.Text = _enabled ? "Enabled" : "Disabled";
                //lblStatus.BackColor = _enabled ? SystemColors.Window : SystemColors.Control;
            }
        }

但是,当设置用户控件的Enabled属性时,不会执行UserControl的Enabled属性中的代码,而只执行UserControl的代码。我无法将 override 放置在接口类中(修饰符“override”对此项无效),或在派生类上(同样,修饰符“override”对此项无效)。

我如何要求在派生类上实现重写?

c# winforms overriding derived-class interface-class
1个回答
0
投票

保持界面不变:

bool Enabled { get; set; }

在实现的标头中,使用

new
关键字隐藏基类方法,以便调用您的方法而不是默认方法。

new bool IPropertyListItemType.Enabled
{
    get
    {
        ...
    }
    set
    {
        ...
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.