Фон: Я настраиваю существующее приложение 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());
}
}
}