Depois de um dia em busca de um jeito de tratar eventos via delegates em user controls, resolvi escrever este simples artigo a fim de expor uma forma fácil que encontrei de solucionar este problema.
Pra começar vou expor o cenário do problema, e depois a solução aplicada.
O artigo encontra-se no arquivo em anexo “tutorial delegates.doc” com imagens explicativas. o arquivo “delegates.zip” contém a solução com os exemplos.
Este código foi desenvolvido utilizando C# 1.1 e VS.Net 2003.
//##################### //arquivo.aspx //##################### <%@ Register TagPrefix="uc1" TagName="ucMenu" Src="ucMenu.ascx" %> <%@ Page language="c#" Codebehind="arquivo.aspx.cs" AutoEventWireup="false" Inherits="TesteUC.arquivo" %>//##################### //arquivo.aspx.cs //##################### using System; using System.Web.UI; namespace TesteUC { public class arquivo : System.Web.UI.Page { protected System.Web.UI.WebControls.Label lblResposta; //preciso declarar a variável ucMenu para ter acesso //ao web user control Menu protected ucMenu ucMenu; #region "" private void Page_Load(object sender, System.EventArgs e){} override protected void OnInit(EventArgs e) { InitializeComponent(); base.OnInit(e); } #endregion private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); //criando um handler de evento ucMenu.clicou+=new TesteUC.ucMenu.botao1_Handler(ucMenu_clicou); } private void ucMenu_clicou(string mensagem) { this.lblResposta.Text = mensagem; } } } //##################### //ucMenu.ascx //##################### <%@ Control Language="c#" AutoEventWireup="false" Codebehind="ucMenu.ascx.cs" Inherits="TesteUC.ucMenu" TargetSchema="https://schemas.microsoft.com/intellisense/ie5"%>arquivo
User control |