c# - 自定义控件覆盖命令按钮

标签 c# winforms custom-controls

我正在尝试创建一个自定义命令按钮,将宽度和高度默认为特定设置。我有以下代码:

public partial class myCommandButton : Button
{
    public magCommandButton()
    {
        InitializeComponent();

    }

    [DefaultValue(840)]
    public override int Width
    {
        get 
        {
            return base.Width;
        }
        set
        {
            base.Width = value;
        }
    }

    [DefaultValue(340)]
    public override int Height
    {
        get
        {
            return base.Height;
        }
        set
        {
            base.Height = value;
        }
    }

    protected override void OnPaint(PaintEventArgs pe)
    {
        base.OnPaint(pe);
    }
}

但是,它不会编译,因为它告诉我不能覆盖宽度或高度。任何人都可以告诉我我是否错误地处理了这个问题,或者是否有办法解决这个问题?

最佳答案

Width 和 Height 不是虚拟成员(检查 Reflector 中的 Control 类),因此最简单的方法是覆盖 DefaultSize 属性:

        protected override Size DefaultSize
        {
            get
            {
                return new Size(840, 340);
            }
        }

您还可以使用 new modifier ,但对于此示例,我建议覆盖 DefaultSize。如果您检查 Reflector 中的 Control 类,您会发现 Height 和 Width 使用了很多内部/私有(private)成员。所以我不认为实现所有这些事情是个好主意。 只需使用 DefaultSize 属性。

关于c# - 自定义控件覆盖命令按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2708243/

相关文章:

WPF 文本框验证样式在鼠标悬停或获得焦点时消失

c# - linq2sql 中的简单急切/延迟加载示例

c# - TreeView 绘制故障

c# - 如何使用 C# 检查 datagridview 中的空单元格和空单元格

c# - 桌面上方的 float 图标

objective-c - 创建自定义 UITableViewCell

c# - 此设计的用户控件或自定义控件?

c# - 将项目列表转换为具有子节点的树节点列表

c# - 创建一个易于理解的双向链表

c# - 异步API