我有一个视图 (userControl),我正在覆盖它的 OnLoad 和 OnLayout 方法。当视图关闭时,执行 OnLayout 方法并且调用 base.OnLayout(e) 触发 OnLoad 方法。
是什么导致 OnLoad 被调用,我该如何避免这种行为?问候。
再次调用 OnLoad 是因为 base.OnLayout() 使用将重新创建窗口的属性。这不好,你肯定需要解决这个问题。您需要找出在释放控件时调用 OnLayout 的原因。在 OnLayout 覆盖上设置断点并检查调用堆栈。如果您无法理解,请将其发布在您的问题中。
感谢汉斯的回复,
由于调用了 dispose,Windows 窗体布局似乎正在调用控件上的布局。无论如何,作为一种解决方法,我用 SuspendLayout() 和 ResumeLayout 围绕调用 base.OnLayout()。
问候。