2010-06-23 21 views
1

A Windows FormControlControls類型的UI元素,它們具有Size屬性以及與大小相關的方法,如OnResizeOnSizeChanged爲什麼有一個窗體的OnResizeBegin,但不是控件?

但是窗體也有OnResizeBegin(和OnResizeEnd),這在Control中找不到。這種疏忽是一個疏忽,一個有先見之明的設計決定,還是其他的完全?

回答

1

當表單大小被用戶改變時引發OnResizeBegin事件,而不是由programmaticaly改變表單屬性(如Size)。大多數控件不能以這種方式調整大小,所以它沒有OnResizeBegin事件。

+1

你的解釋是有道理的,但拆分容器控件(這是用戶可重定義的)並沒有這些事件。看起來像是一個疏忽,但我猜想它與實現分體容器的重新尺寸功能的方式有關。觀看動畫,看看我的意思。 (我並不是說你錯了,順便說一句,我希望你的解釋是100%正確的,我只是看着它,因爲我發生了一個拆分容器打開ATM的項目。) – 2010-06-23 21:05:58

0

當你將某些東西添加到像Control這樣具有大量後代的基類中時,它會被所有東西繼承,無論它是否有意義(例如,許多程序員會關心單選按鈕開始獲取調整?)。您添加的每種方法,屬性和事件都會使API變得複雜得多。

現在Control中有很多其他的例子對每個孩子都沒有意義(例如Label控件上的Leave事件),但這是Forms的矛盾沼澤的一部分。 WPF中使用的附加屬性系統更加優雅。

+0

我不同意。這是一致性,使API不復雜。不一致是什麼佔據了大腦空間和混亂的頭腦,和API。 – 2010-06-24 00:17:07

+0

這是我的觀點的一部分,表格中的不一致。您不同意將方法/屬性/事件添加到父控件中,這對他們的子女沒有意義,不會使API複雜化? – 2010-06-24 04:20:45

相關問題