2012-02-23 77 views
0

我正在創建一個控件,並添加一個屬性(控件的外觀取決於它)。我怎樣才能設置此屬性:初始化控件的屬性無需重新繪製

  1. 後立刻InitializeComponent()電話我不能設置表單構造屬性。在這種情況下,用戶將看到兩個表單初始化框架:第一個 - 在InitializeComponent()之後,第二個 - 在屬性設置之後,調用控件的重繪。壞。

  2. 而且,我不能記住我與BrowsableAttribute propperty,引起屬性的類型,是我自己的類,不能在«屬性窗口»來可配置。很糟糕。

所以,我怎麼能inicialize form1.SuspendLayout()form1.ResumeLayout(false)之間的財產?


理想情況下,我想有可能直接在«屬性窗口»的相應字段中編寫代碼。例如,如果屬性的類型是MyClass,我會寫new MyClass(param1, param2)

+0

如果無法在屬性窗口中設置屬性,爲什麼要創建它,爲什麼控件依賴於它? – 2012-02-23 09:49:51

+1

這不是一個真正的問題。繪畫僅在創建控件的本機窗口後發生。在表單構造函數完成運行後發生的情況很好。 – 2012-02-23 10:02:58

回答

1

不要強制controll重繪屬性更改。當你初始化控件時,當用戶改變屬性時,它將不會在下一次繪畫事件中重繪。如果需要,用戶可以在設置屬性後手動調用.Refresh()手動強制重繪。