是否有可能获得一个控件事件列表,这些事件会在它们发生之前触发,比如在Page_Load
处理程序中?
例如,如果点击了一个按钮,我可以在调用button_click
事件处理程序之前解决这个问题吗?
答案 0 :(得分:2)
不幸的是,询问__EVENTTARGET值将无法解决问题。通常,该值将为空。回发处理根据不仅仅是事件目标值(如果有的话)测试控件状态值与表单发布的值(例如文本框)之间的关系来决定是否应该引发像TextChanged之类的事件,从而做出一些关于要引发什么事件的决定
除了实际将事件处理程序连接到您希望捕获事件的所有控件之外,我认为没有任何方法可以确定它。基本上可以做一下框架所做的事情。您需要在创建控件和恢复viewstate之间但在处理发布值之前执行此操作。您可以将当前控制值(来自viewstate)与发布的值进行比较,从根本上确定将触发的事件。
你的目标是什么?也许有更好的解决方案。
答案 1 :(得分:2)
你选择了一个非常棘手的问题......原因是有几种方法可以引发事件。
1)__ EVENTTARGET(如上所述) 2)如果您的按钮名称是MyButt,那么您将在查询字符串中看到“MyButt =”。 3)当每个控件(例如,一个TextBox)检查请求以查看它在ViewState中的值是否与发布时不同时,将触发“Text_Changed”。
但是,您可以使用#1和#2来检查一些地方。
答案 2 :(得分:0)
以下内容包含单击按钮时的错位ID。
Page.Request.Form["__EVENTTARGET"]
答案 3 :(得分:0)
Here is an example我相信你会回答你的问题。
另一种方法是在调试时设置一些断点。