Фон: Я настраиваю существующее приложение ASP.NET/С#. У этого есть свои небольшие "рамки" и соглашения, которые разработчики должны соблюдать, расширяя/настраивая его функциональность. В настоящее время я расширяю некоторые из них административные функциональные возможности, на которые инфраструктура предоставляет контракт для обеспечения реализации метода GetAdministrationInterface()
, который возвращает System.Web.UI.Control
. Этот метод вызывается во время метода Page_Load()
страницы, на которой размещен интерфейс графического интерфейса.
Проблема: У меня есть три кнопки в моем графическом интерфейсе, каждому из которых назначен обработчик событий. Мой графический интерфейс пользователя загружается совершенно нормально, но нажатие любой из кнопок не делает того, что я ожидаю от них. Однако, когда я нажимаю на них второй раз, кнопки работают.
Я поставил точки останова в начале каждого метода обработчика событий и прошел через мой код. При первом щелчке ни один из обработчиков событий не был запущен. Во втором щелчке они стреляли.
Любые идеи?
Пример определения кнопки (в пределах 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());
}
}
}