C# 为什么表单有OnResizeBegin,而控件没有?

C# 为什么表单有OnResizeBegin,而控件没有?,c#,winforms,event-handling,C#,Winforms,Event Handling,Windows窗体是控件的一种,而控件是具有大小属性以及大小相关方法(如调整大小和调整大小)的UI元素 但是表单也有OnResizeBegin(和OnResizeEnd),这在控件中找不到。这是一个疏忽,一个有先见之明的设计决策,还是完全是其他原因?OnResizeBegin事件在表单大小由用户更改时引发,而不是由程序更改表单属性(如大小)。大多数控件无法以这种方式调整大小,因此它没有OnResizeBegin事件。当用户更改表单大小时,会引发OnResizeBegin事件,而不是通过程序更改表

Windows
窗体
控件
的一种,而
控件
是具有
大小
属性以及大小相关方法(如
调整大小
调整大小
)的UI元素


但是表单也有
OnResizeBegin
(和
OnResizeEnd
),这在
控件中找不到。这是一个疏忽,一个有先见之明的设计决策,还是完全是其他原因?

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

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

当您向具有如此多后代的基类(如控件)添加某些内容时,它将被所有东西继承,无论其是否合理(例如,许多程序员是否关心单选按钮开始调整大小?)。您添加的每个方法、属性和事件都会使API变得更加复杂


现在有很多其他的例子表明,控制中的事情对每个孩子都没有意义(例如,标签控件上的离开事件),但这是形式上的矛盾泥沼的一部分。WPF中使用的附加属性系统要优雅得多。

当您向具有如此多子代的基类控件添加某些内容时,它将被所有内容继承,无论其是否合理(例如,许多程序员是否关心单选按钮开始调整大小?)。您添加的每个方法、属性和事件都会使API变得更加复杂


现在有很多其他的例子表明,控制中的事情对每个孩子都没有意义(例如,标签控件上的离开事件),但这是形式上的矛盾泥沼的一部分。WPF中使用的附加属性系统要优雅得多。

您的解释有道理,但拆分容器控件(可由用户重新调整大小)也没有这些事件。这似乎是一个疏忽,但我想这更多地与拆分容器的重新调整大小功能的实现方式有关。观看动画以了解我的意思。(顺便说一句,我并不是说你错了;我希望你的解释是100%正确的。我只是在进一步研究它,因为我碰巧有一个使用拆分容器开放式ATM的项目。)你的解释是有道理的,但拆分容器控件(用户大小)也没有这些事件。这似乎是一个疏忽,但我想这更多地与拆分容器的重新调整大小功能的实现方式有关。观看动画以了解我的意思。(顺便说一句,我并不是说你错了;我希望你的解释是100%正确的。我只是在进一步研究它,因为我碰巧有一个使用拆分容器开放式ATM的项目。)我不同意。正是一致性使API变得简单。不一致性占据了大脑空间,扰乱了思维和API。这就是我的观点的一部分,形式上的不一致性。你不同意向父控件添加对其子控件毫无意义的方法/属性/事件不会使API复杂化吗?我不同意。正是一致性使API变得简单。不一致性占据了大脑空间,扰乱了思维和API。这就是我的观点的一部分,形式上的不一致性。您不同意向父控件添加对其子控件毫无意义的方法/属性/事件不会使API复杂化吗?