4
似乎無法弄清楚如何做到這一點。我有一個繼承控制:MyControl一個叫MyOtherFont財產。我如何獲得MyOtherFont繼承父控件的字體屬性的環境價值?創建環境屬性繼承從家長的物業
例如,從如果我拖累了該控件到窗體上,其中的字體的Segoe UI設計師,應該繼承的形式是價值,而不是顯示它在屬性窗口加粗。
感謝
似乎無法弄清楚如何做到這一點。我有一個繼承控制:MyControl一個叫MyOtherFont財產。我如何獲得MyOtherFont繼承父控件的字體屬性的環境價值?創建環境屬性繼承從家長的物業
例如,從如果我拖累了該控件到窗體上,其中的字體的Segoe UI設計師,應該繼承的形式是價值,而不是顯示它在屬性窗口加粗。
感謝
想通了。這是一個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;
}
}
這是不夠的,你還必須給出一種方法來重置屬性,使它再次成爲環境。 ResetMyOtherFont()方法。並告訴設計師,[AmbientValue]屬性。 – 2013-05-07 21:42:03
@HansPassant我在那裏有ResetMyOtherFont方法。不知道該屬性應該如何在該屬性上使用。任何見解? – test 2013-05-07 21:49:16
當您第一次獲得父字體時,您可能需要將繼承的字體設置爲基礎,以便每次您希望訪問它時都沒有兩個if語句 – Sayse 2013-05-07 22:07:07