3 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個贊
有關(guān)Windows窗體工作方式的設(shè)計(jì)決策或多或少排除了Windows窗體組件的參數(shù)化.ctors。您可以使用它們,但是當(dāng)您這樣做時(shí),便會超出公認(rèn)的機(jī)制。而是Windows窗體更喜歡通過屬性初始化值。如果未廣泛使用,這是一種有效的設(shè)計(jì)技術(shù)。
不過,這有一些好處。
易于客戶使用。客戶端代碼不需要跟蹤一堆數(shù)據(jù),它可以立即創(chuàng)建某些內(nèi)容,并以有意義(如果不感興趣)的結(jié)果來查看它。
設(shè)計(jì)者易于使用。通常,設(shè)計(jì)器代碼更清晰,更易于解析。
阻止單個組件中異常的數(shù)據(jù)依賴關(guān)系。(盡管甚至Microsoft都用吹滅了它
SplitContainer
)
表單中也有很多支持,可以與設(shè)計(jì)師一起使用此技術(shù)。,和這樣的東西DefaultValueAttribute
,使您有機(jī)會以最小的努力提供豐富的客戶體驗(yàn)。DesignerSerializationVisibilityAttribute
BrowsableAttribute
(這并不是在Windows窗體中為客戶體驗(yàn)做出的唯一折衷。抽象基類組件也可能變得毛茸茸。)
我建議堅(jiān)持使用無參數(shù)構(gòu)造函數(shù),并在Windows窗體設(shè)計(jì)原則中進(jìn)行工作。如果UserControl
必須執(zhí)行一些實(shí)際的先決條件,則將它們封裝在另一個類中,然后通過一個屬性將該類的實(shí)例分配給您的控件。這也將更好地分離關(guān)注點(diǎn)。

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個贊
不幸的是,這是一個經(jīng)常發(fā)生的設(shè)計(jì)問題,而不僅僅是控制空間。
在很多情況下,即使無參構(gòu)造函數(shù)不是理想的,您也需要有無參構(gòu)造函數(shù)。例如,如果沒有無參數(shù)構(gòu)造函數(shù),則許多值類型IMO會更好,但是創(chuàng)建一個可以那樣工作的類型是不可能的。
在這些情況下,您僅需以最佳方式設(shè)計(jì)控件/組件。使用合理的(最好是最常用的)默認(rèn)參數(shù)可以極大地幫助您,因?yàn)槟辽伲ㄏM┛梢允褂昧己玫闹党跏蓟M件。
另外,嘗試以某種方式設(shè)計(jì)組件,以便在生成組件后可以更改這些屬性。使用Windows Forms組件通常很好,因?yàn)樵诎踩虞d時(shí)間之前,您幾乎可以做任何事情。
再次,我同意-這不是理想的選擇,但這只是我們必須與之共處和解決的問題。
- 3 回答
- 0 關(guān)注
- 963 瀏覽
添加回答
舉報(bào)