创建从父属性继承的环境属性

时间:2013-05-07 20:55:18

标签: c# .net vb.net winforms windows-forms-designer

似乎无法弄清楚如何做到这一点。我有一个继承的控件: MyControl ,带有一个名为 MyOtherFont 的属性。如何让 MyOtherFont 继承父控件 Font 属性的环境值?

例如,如果我将此控件拖到字体为Segoe UI的Form上,则从设计器中,它应该从Form继承该值,而不是在属性窗口中以粗体显示。

由于

1 个答案:

答案 0 :(得分:3)

想出来。这是一个C#示例,它完全符合我的示例所描述的内容。希望这有助于某人。

public class MyControl : Control
{

    private Font myOtherFont;
    public Font MyOtherFont
    {
        get
        {
            if (this.myOtherFont == null)
            {
                if (base.Parent != null)
                    return base.Parent.Font;
            }

            return this.myOtherFont;
        }
        set
        {
            this.myOtherFont = value;
        }
    }

    private bool ShouldSerializeMyOtherFont()
    {
        if (base.Parent != null)
            if (base.Parent.Font.Equals(this.MyOtherFont))
                return false;

        if (this.MyOtherFont == null)
            return false;

        return true;
    }

    private void ResetMyOtherFont()
    {
        if (base.Parent != null)
            this.MyOtherFont = base.Parent.Font;
        else
            this.MyOtherFont = Control.DefaultFont;
    }
}