背景:我正在定制一个现有的ASP .NET / C#应用程序。它有自己的小型“框架”和开发者在扩展/定制其功能时需要遵循的约定。我目前正在扩展一些管理功能,框架提供了一个合同来强制执行GetAdministrationInterface()
方法的实现,该方法返回System.Web.UI.Control
。这个方法在承载GUI界面的页面的Page_Load()
方法中调用。
问题:我的GUI中有三个按钮,每个按钮都被分配了一个事件处理程序。我的管理GUI可以完美地加载,但点击任何一个按钮不会执行我期望的操作。然而,在第二次点击时,这些按钮起作用了。
我在每个事件处理程序方法的开头放置了断点并逐步执行了我的代码。在第一次点击时,没有触发任何事件处理程序。在第二次点击时,它们被触发了。
按钮定义示例(在GetAdministrationInterface
内部)
public override Control GetAdministrationInterface()
{
// more code...
Button btn = new Button();
btn.Text = "Click Me!";
btn.Click += new EventHandler(Btn_Click);
// more code...
}
事件处理方法定义示例
void Btn_Click(object sender, EventArgs e)
{
// Do Something
}
Page_Load
方法调用GetAdministrationInterface
protected void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsAsync)
{
List<AdministrationInterface> interfaces = <DATABASE CALL>;
foreach(AdministrationInteface ai in interfaces)
{
placeholderDiv.Controls.Add(ai.GetAdministrationInterface());
}
}
}
Page_Load
代码添加到了原始问题中。 - John