Webforms asp:Panel 子项未在 VS 2012 中完全显示

Webforms asp:Panel children not showing fully in VS 2012

我正在努力处理我的自定义 WebForms 组件的设计时呈现,我在其中定义了一个派生自 Panel 的控件和一个派生自 WebControl 的第二个控件。

我通过从工具箱中拖放来将 WebControl 放置在面板中。我遇到的问题是,在设计时,当我将组件拖放到 Panel 中时,WebControl 设计器的 Paint 方法立即被执行,但是通过 getDesignTimeHtml 的解释和 [=17= 的应用生成的图像] 规则在不同秒数后执行,通常在 1 到 4 秒之间。

所以我的组件被两个不同的逻辑片段绘制了两次。我怎样才能同步这些事件,以便它们同时执行?必须等待重影图像自行清理会分散开发人员的注意力。请注意,如果我将 WebControl 放在 Panel 之外,则会同时调用这两种方法,并且会立即调用它们。

一种解决方案是调用属于父 System.Web.UI.WebControls.PanelPanelContainerDesignerInvalidate() 方法。从子组件 DesignerOnPaint() 方法中调用它。

为了防止不必要的循环,让子组件的 Designer 在每次 OnPaint() 调用时记住并验证其位置数据,并且仅在 PanelContainerDesigner 上调用 Invalidate() 如果有一个真正的变化。