防止control'的size属性被设置

本文关键字:size 属性 设置 control 防止 | 更新日期: 2023-09-27 18:12:07

我试图创建一个自定义的Panel类,它不允许它的大小被设置在类之外。我尝试的是:

public class FixedPanel : Panel
{
    public override Size Size { get; private set; }
}

但是我得到一个错误,说FixedPanel.Size.set: cannot override inherited member 'System.Windows.Forms.Control.Size.set' because it is not marked virtual, abstract, or override

是否有办法防止用户设置控件的大小?


编辑:我想出了一个更干净的解决方案,消除了单独设置两个属性的需要,但我不确定它是否真的是一个合适的方式。下面是我要做的:

private Size fixedSize;
private void SetFixedSize(Size size=null)
{
    if (size)
        this.fixedSize = size;
    if (this.Size != this.fixedSize)
        this.Size = this.fixedSize;
}
public FixedPanel()
{
    this.SizeChanged += SetFixedSize;
}

防止control'的size属性被设置

Try with new:

public class FixedPanel : Panel
{
    public new Size Size { get; private set; }
}