是的,有一个类似的问题
here
. 然而,这个问题似乎没有附加代码(尽管它可能在某个时刻有;我看到答案暗示着代码),而关于它的公认答案(和其他建议)并不能让我找到我需要的地方。
我有一个相当复杂的,而且坦率地说,我用一个新功能扩展的VB.NET Web应用程序设计得不好。该功能的简短形式是,它允许管理用户在主页上重新定位某些元素。在此阶段,不能重新设计Web部件。
允许调整大小的管理页面使用简单的用户控件来表示主页上可以移动的每个“框”(请原谅我的ASCII艺术):
+------------+
| Box Title |
+------------+
| /\ |
| < X > |
| \/ |
+------------+
四个箭头(以及中心X-或眼睛,取决于框的可见性)是
ImageButton
每一个
图片按钮
的
Click
事件连接到类似于以下代码的代码:
RaiseEvent WidgetMoved(Me, New WidgetMovedEventArgs(WidgetMoveDirection.Up, widgetIDField.Value))
宿主页(它本身位于
MasterPage
)在绑定到确定其位置的数据后启动这些用户控件:
For i as Integer = 0 To count
Dim widget As MyWidget = widgets(i) '' widgets is a collection
Dim box as controls_CustomizeWidget = BindWidget(WidgetColumns.Left, i, count, widget) '' This simply uses LoadControl and places the control in one of two placeholders
AddHandler box.WidgetMoved, AddressOf widget_WidgetMoved
AddHandler box.WidgetVisibleChanged, AddressOf widget_WidgetVisibleChanged
Next
无论我是否在回发中,每次页面加载时都会调用带有此代码的方法。(我“实时保存”数据;如果进行更改,它将在回发时保存到数据库,然后重新加载。)
每个
其他
回发后,用户控制按钮事件不会触发。他们发起了一个新的反击,在第二个反击中,他们表现得很好。所以,本质上,我的控件需要两次单击才能完成任何操作。
具体来说,控件在
Page.Load
事件处理程序。我试过了
PreInit
,但这不起作用,因为页面结构的其余部分尚未构建,因此尝试将它们放置在适当的位置
PlaceHolder
S与A失败
NullReferenceException
. 我在网上搜索过,没有看到类似的情况,我必须承认,在我从用户控件(如
每一个
本站页面),没有问题。另一方面,这是站点上唯一一个在运行时动态加载具有事件的用户控件的页面…
我现在觉得很蠢。每次都有助于使事件可靠地上升吗?我做错什么了?