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