使用 C# 重写从按钮扩展的控件的“文本”属性

本文关键字:控件 属性 文本 扩展 重写 按钮 使用 | 更新日期: 2023-09-27 18:33:20

我在扩展标准 WebControls.Button 控件时遇到问题。我需要覆盖 text 属性,但我收到错误消息:

无法覆盖固有成员"System.Web.UI.WebControls.Button.Text.get",因为它未标记为虚拟、抽象或覆盖

我将以下代码用于 LinkButton,并且运行良好:

public class IconLinkButton : LinkButton
{
    private string _icon = "";
    public string Icon
    {
        get
        {
            return _icon;
        }
        set
        {
            _icon = value;
        }
    }
    public override string Text
    {
        get
        {
            return "<i class='""+Icon+"'"></i> " + base.Text;
        }
        set
        {
            base.Text = value;
        }
    }
}

但是,对标准按钮执行相同的操作会引发我上面描述的错误。

public class IconButton : Button
{
    private string _icon = "";
    public string Icon
    {
        get
        {
            return _icon;
        }
        set
        {
            _icon = value;
        }
    }
    public virtual string Text
    {
        get
        {
            return "<i class='"" + Icon + "'"></i> " + base.Text;
        }
        set
        {
            base.Text = value;
        }
    }
}

我该如何解决这个问题?

使用 C# 重写从按钮扩展的控件的“文本”属性

这是因为LinkButton具有virtual Text属性..而Button则没有。

您可以使用new完全隐藏基本功能:

public class IconButton : Button {
    public new string Text {
        // implementation
    }
}

使用 new 将完全隐藏继承的成员。