SetBounds和SetBoundsCore有什么区别

时间:2012-01-08 10:42:49

标签: c# winforms

在WinForms中,您可以使用SetBounds设置控件的边界,或者如果您已创建用户控件,则可以覆盖SetBoundsCore。我想知道,他们都做了同样的事情还是有差异?

3 个答案:

答案 0 :(得分:3)

首先SetBounds不是虚拟的,所以如果你需要在设置边界时运行一些额外的代码,你唯一的选择是覆盖SetBoundsCore

SetBounds执行一些参数验证,并包含有关根据SetBoundsCore参数调用BoundsSpecified并使用正确大小的逻辑。它还确保不会调用SetBoundsCore,除非大小实际发生变化。

换句话说,SetBoundsCore是实现的核心,而SetBounds是包含验证和其他一些内务逻辑的公共入口点。

答案 1 :(得分:3)

SetBounds()是一种public方法,用于更改控件的位置和大小。它会调用protected virtual SetBoundsCore()方法。

这意味着如果覆盖SetBoundsCore(),您可以更改其算法(例如添加位置和大小限制),即使您自己的调用SetBounds()以外的某些代码,这些更改也会适用。 / p>

答案 2 :(得分:0)

我假设用户调用SetBounds转发到SetBoundsCore以实现实际行为。你的代码永远不应该调用SetBoundsCore