В чем разница между SetBounds и SetBoundsCore - PullRequest
4 голосов
/ 08 января 2012

В WinForms вы можете установить границы элемента управления, используя SetBounds, или, если вы создали пользовательский элемент управления, вы можете переопределить SetBoundsCore.Мне было интересно, они оба делают то же самое или есть какие-то различия?

Ответы [ 3 ]

3 голосов
/ 08 января 2012

Прежде всего SetBounds не является виртуальным, поэтому, если вам нужно запустить какой-то дополнительный код, когда границы установлены, вы можете переопределить SetBoundsCore.

.

SetBounds выполняет некоторую проверку параметров и содержит логику в отношении вызова SetBoundsCore с правильным размером, основанным на параметре BoundsSpecified. Это также гарантирует, что вы не вызовете SetBoundsCore, если размер не изменится.

Другими словами, SetBoundsCore является основой реализации, тогда как SetBounds является общедоступной точкой входа, которая содержит проверку и некоторую другую служебную логику.

3 голосов
/ 08 января 2012

SetBounds () - это метод public, который изменяет расположение и размер элемента управления. Он вызывает метод protected virtual SetBoundsCore () под капотом.

Это означает, что если вы переопределите SetBoundsCore(), вы можете изменить его алгоритм (например, добавить ограничения на местоположение и размер), и эти изменения будут применяться, даже если какой-то код, отличный от ваших собственных вызовов SetBounds().

0 голосов
/ 08 января 2012

Я предполагаю, что пользователь вызывает SetBounds, который перенаправляет на SetBoundsCore для реализации фактического поведения. SetBoundsCore никогда не должен вызываться вашим кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...