为什么表单有OnResizeBegin,而不是控件?

时间:2010-06-23 20:53:58

标签: c# winforms event-handling

Windows FormControl的一种类型,Controls是具有Size属性的UI元素以及与OnResize等大小相关的方法}和OnSizeChanged

但是,表单也有OnResizeBegin(和OnResizeEnd),这些内容在Control中找不到。这个遗漏是一种疏忽,一种有先见之明的设计决定,还是完全不同的东西?

2 个答案:

答案 0 :(得分:1)

当用户更改表单大小时会引发OnResizeBegin事件,而不是通过programmaticaly更改表单属性(如大小)。大多数控件都无法以这种方式调整大小,因此它没有OnResizeBegin事件。

答案 1 :(得分:0)

当您向像Control这样具有如此大量后代的基类添加内容时,无论是否有意义,它都将被所有内容继承(例如,许多程序员会关注单选按钮是否开始调整大小?)。您添加的每个方法,属性和事件都会使API变得更加复杂。

现在控制中还有很多其他的例子对每个孩子都没有意义(例如Label控件上的Leave事件),但那是与形式相矛盾的一部分。 WPF中使用的附加属性系统更加优雅。