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.Panel
的 PanelContainerDesigner
的 Invalidate()
方法。从子组件 Designer
的 OnPaint()
方法中调用它。
为了防止不必要的循环,让子组件的 Designer
在每次 OnPaint()
调用时记住并验证其位置数据,并且仅在 PanelContainerDesigner
上调用 Invalidate()
如果有一个真正的变化。
我正在努力处理我的自定义 WebForms 组件的设计时呈现,我在其中定义了一个派生自 Panel 的控件和一个派生自 WebControl 的第二个控件。
我通过从工具箱中拖放来将 WebControl 放置在面板中。我遇到的问题是,在设计时,当我将组件拖放到 Panel 中时,WebControl 设计器的 Paint 方法立即被执行,但是通过 getDesignTimeHtml 的解释和 [=17= 的应用生成的图像] 规则在不同秒数后执行,通常在 1 到 4 秒之间。
所以我的组件被两个不同的逻辑片段绘制了两次。我怎样才能同步这些事件,以便它们同时执行?必须等待重影图像自行清理会分散开发人员的注意力。请注意,如果我将 WebControl 放在 Panel 之外,则会同时调用这两种方法,并且会立即调用它们。
一种解决方案是调用属于父 System.Web.UI.WebControls.Panel
的 PanelContainerDesigner
的 Invalidate()
方法。从子组件 Designer
的 OnPaint()
方法中调用它。
为了防止不必要的循环,让子组件的 Designer
在每次 OnPaint()
调用时记住并验证其位置数据,并且仅在 PanelContainerDesigner
上调用 Invalidate()
如果有一个真正的变化。