Попытка запустить событие кнопки настраиваемого элемента управления ASP.NET - PullRequest
0 голосов
/ 09 апреля 2011

У меня есть простой тестовый пользовательский элемент управления, который я создал, и пытаюсь выяснить, почему событие click не сработает.ниже код.Я просто создаю экземпляр элемента управления на тестовой странице с

Page_Load страницы .aspx, которая использует защищенный элемент управления void Page_Load (отправитель объекта, EventArgs e) {Page.Form.Controls.Add (new TestControl ());}

Страница отправляет сообщение назад, но не регистрирует событие щелчка в пользовательском элементе управления.Пожалуйста, объясните, что я делаю неправильно, или лучше подойти к этому с помощью определенного шаблона и т. Д.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI;

namespace WorldOfTest
{

открытый класс TestControl: WebControl {private Button btn;

    protected override void OnInit(EventArgs e)
    {            
        base.OnInit(e);
    }

    protected override void EnsureChildControls()
    {
        btn = new Button();           
        this.Controls.Add(btn); 
        base.EnsureChildControls();
    }

    protected override void CreateChildControls()
    {

        btn.Click += new EventHandler(btn_Click);  
        btn.Text = "test button";                         
        base.CreateChildControls();
    }

    void btn_Click(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }

    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        btn.RenderControl(writer); ;
    }

}
}

Спасибоза вашу помощь

1 Ответ

0 голосов
/ 09 апреля 2011

Вы должны добавить свою btn в Controls коллекцию вот так

    protected override void EnsureChildControls()
    {
        this.btn = new Button();   
        Controls.Add(btn);         
        base.EnsureChildControls();
    }

EDIT:

Кажется, у меня все работает, как только я добавляю кнопку в коллекцию элемента управления

Я попробовал это

    protected void Page_Load(object sender, EventArgs e)
    {
        Page.Form.Controls.Add(new Tester());
    }

и я понял enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...