2011-08-02 33 views
1

我有一個自定義用戶控件並且已覆蓋其Font屬性。在設計器文件中不顯示的自定義用戶控件中的重寫字體屬性

當我把我的usercontrol的一個副本拖放到窗體上時,我可以將Font屬性設置得很好,但是我沒有看到爲窗體的設計器文件中顯示的'Font'設置的值。當我編譯/運行我的應用程序時,我輸入的值丟失。

請注意,我也想重寫Text屬性,並且無法在設計器文件中看到此設置值 - 直到我在這裏找到答案來幫助做到這一點(我需要設置' DesignerSerializationVisibility「和」EditorBrowsable「屬性)。我已經嘗試做同樣的字體,但無濟於事。有任何想法嗎?

private Font _Font = UserControl.DefaultFont; 

    [Description("Sets the font of the button caption"),, 
    Browsable(true), 
    Bindable(true), 
    EditorBrowsable(EditorBrowsableState.Always), 
    DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] 
    public override Font Font 
    { 
     get { return _Font; } 
     set 
     { 
      _Font = value; 
     } 

    } 
+0

難道你們就不能僅僅用'base.Font'?有兩個實例有什麼意義? – Patrick

+0

在文檔中也注意到[this](http://msdn.microsoft.com/en-us/library/system.windows.forms.control.font.aspx):「*繼承者註釋 當重寫Font屬性在派生類中,使用基類的Font屬性來擴展基本實現,否則,你必須提供所有的實現,你不需要重寫Font屬性的get和set訪問器;如果需要的話,你可以覆蓋只有一個。*「 – Patrick

回答

0

你的代碼改成這樣:

public UserControl1() 
{ 
    InitializeComponent(); 
    base.AutoScaleMode = AutoScaleMode.None; 
} 

[Description("Sets the font of the button caption")] 
public override Font Font 
{ 
    get { return _Font; } 
    set { _Font = base.Font = value; } 
} 
+0

這確實將值輸入到設計器文件中,但設置基本Font屬性會拋出用戶控件上的子控件的所有大小。例如,如果我增加字體大小,那麼用戶控件上的按鈕將會增加。 –

+0

@Mike R.更新回答:將AutoScaleMode = Font(默認)設置爲None。 – LarsTech

+0

只是偶然發現了我自己!非常感謝'LarsTech' –

相關問題