2

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

ユーザーがコントロールのサイズを設定できないようにする方法はありますか?


編集: 2 つのプロパティを別々に設定する必要をなくす、よりクリーンなソリューションを思いつきましたが、それが本当に適切な方法であるかどうかもわかりません。これが私がすることです:

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;
}
4

1 に答える 1

3

新しいものを試してください:

public class FixedPanel : Panel
{
    public new Size Size { get; private set; }
}
于 2013-05-05T16:24:35.377 に答える