Fórum Delegate #9073

02/09/2009

0

Olá,   Minha aplicação está basicamente estruturada uma MasterPage contendo um controle de Menu, um UserControl chamado Alertas e um ContentPlace.   Este UserControl chamado Alertas, simula uma MessageBox onde se pode definir através de propriedades públicas quais botões serão exibidos como também os eventos que serão vinculados a estes botões (delegates).   Basicamente é simples o que desejo fazer, porém não estou obtendo sucesso.   Adicionei um outro UserControl chamado Enderecos, dentro do ContentPlace do MasterPage atráves da página Default.aspx a qual está vinculada ao MasterPage.   Este UserControl chamado endereços possui um botão qualquer que, ao ser clicado, definir os botões que serão exibidos no UserControl de Alertas e também fazer a associação dos eventos para os respectivos botões.   Em outras palavras, quero que através do UserControl inserido dentro do ContentPlace do MasterPage, eu possa manipular um outro UserControl, o qual está inserido no próprio MasterPage.   Manipular algumas propriedades nativas do controle funciona normalmente, mas a vinculação dos eventos não ocorre.   Debugando percebe-se evidentemente que primeiro ocorre o Load do MasterPage, logo depois do UserControl nele próprio, chamado Alertas, e por fim o UserControl contido no ContentPlace.   Já tentei declarar um propriedade pública no MasterPage que retorna o UserControl Alertas para ser acessado de outra página, mas mesmo assim, não consigo manipular os delegates. Eles não são vinculados.   O UserControl Alertas, existente no próprio MasterPage, possui um delegate chamado BotaoOk_Click e o evento que deve ser vinculado a ele está localizado dentro do UserControl Endenrecos, que está dentro co ContentPlace.   Ficaria mais ou menos assim:
(Erp.UI.Controles.Alertas)Page.Master.FindControl("Alertas")).BotaoOk_Click += new EventHandler(EventoOK);   //ISSO QUE NÃO ESTÁ OCORRENDO! ELE CRIA O EVENTHANDLER MAS NÃO VINCULA POIS O LOAD DO USERCONTROL ALERTAS OCORRE ANTES DISSO E ACHO QUE DEVERIA OCORRER DEPOIS DO LOAD DO USERCONTROL ENDERECOS SENÃO O EVENTO VAI ESTAR SEMPRE NULL. OU NÃO TEM NADA A VER ???   Aguardo uma solução...   Obrigado.    
Rubens Cury

Rubens Cury

Responder

Posts

03/09/2009

Luiz Maia

Ola Rubens,   Estou tentando simular sua aplicação, mas esta meio complicado. Pode me mandar seu codigo por favor? Assim posso dar uma olhada na solução.   O que falou faz sentido, não tem como se o eventhandler for renderizado depois da criação do objeto. Temos que achar outra solução então, outro caminho.   Pode publica-lo no disco virtual e me passar o link, ok? Estarei aguardando.   Abraços Att Luiz Maia
Responder

Gostei + 0

03/09/2009

Rubens Cury

Olá, Segue o link do projeto de exemplo para a necessidade que relatei. http://video.devmedia.com.br/discovirtual/209531/Delegate.zip   Grato
Responder

Gostei + 0

03/09/2009

Luiz Maia

Ola Rubens,   Montei um exemplo bem simples aqui.   http://video.devmedia.com.br/discovirtual/200237/WebSiteBarra.zip     Repare na linha do event handlre do delegate, (user control):   linkButtonCadastrar.Click += delegate(Object sender, EventArgs e) { DispararEvento(BotaoBarraFerramentas.Cadastrar); }; Execute o projeto e clique no botão Cadastrar. Caso não entenda algum passo, me diga que te explico melhor o trecho, ok?   Aguardo. Abraços   Att Luiz Maia
Responder

Gostei + 0

04/09/2009

Rubens Cury

Olá Luiz,   Não me leve a mal, mas eu não compreendi... Ainda tenho algumas dúvidas em relação aos delegates, e no seu exemplo eu acabei me confundindo um pouco.   Não seria possível uma solução no meu próprio código que eu enviei ?   Um abraço, Rubens    
Responder

Gostei + 0

04/09/2009

Devmedia

Rubens,
o Suporte DevMedia não desenvolve nenhuma linha de código, apenas tira dúvidas sobre o mesmo.
Para facilitar, seria interesante que vc gravasse um video dizendo quais são as suas dúvidas na hora da implmentação para que o consultor possa ser mais objetivo em suas respostas.
Caso tenha dúvidas quanto a gravação de video e o envio, assista ao video explicativo no link que se encontra ao lado da opção "meus videos", na home do suporte.
Responder

Gostei + 0

04/09/2009

Rubens Cury

Não pedi pra escrever nenhuma linha de código, apenas desejo saber PORQUE a forma como fiz no meu exemplo não funciona. Como Sr. Luiz se prontificou a desenvover um exemplo, pedi apenas que isso fosse feito de outra forma, pois da forma como foi feito eu não entendi. E tenho total direito disso. Na minha opinião, só existe um diferencial entre um suporte pago como este em relação aos fórums públicos, a forma como as respostas são dadas.   A resposta que tive, poderia facilmente ser encontrada num fórum se eu postasse o que postei.   Eu desejo um suporte de como devem ser inplantados os delegates para atender a necessidade que eu desejo. Se o que eu desejo não é possível por questões de boas práticas ou por questões técnicas, desejo receber um feedback detalhado do porque não é possível e onde eu errei.   Esta seria perfeitamente a posição de um professor particular atuando num caso como esse. Eu preciso ter liberdade de perguntar; como e por que (é isso que está no escopo). Caso contrário este suporte não tem diferencial nenhum.   Ademais, o último objetivo que tenho é criar qualquer tipo de desconfortos para a equipe e regras da DevMedia, como também para mim.   Em relação ao vídeo, desculpe mas eu tenho preferência por escrever.   Obrigado.
Responder

Gostei + 0

04/09/2009

Luiz Maia

Ola Rubens,   Voce tem toda razão em seus questionamentos, mas o intuito da consultoria é "Tirar Dúvidas". Na maioria das vezes, quando vejo que o usuário tem uma duvida um pouco mais complexa, acabo desenvolvendo um exemplo simples e enviando, sei que isto facilita bastante e fica mais facil a compreensão para o usuário.   Geralmente não entramos em questões de boas práticas ou não, apenas ajudamos os usuarios com as duvidas pertinentes a suas aplicações. Nosso intuito não é "arquitetar" nada para o usuario, que deve escolher como programar, que recursos usar e etc... Respondemos apenas o que nos é questionado. Tem usuários que não gostam de receber sugestões.   Mas deixando esta peleja delado, vamos voltar ao que interessa, a solução de seu problema. No exemplo que te envie, fiz um delegate com event handler funcionando, usando master page e um user control, assim como em sua aplicação. Um botão no user control assume comportamento setado na master page e aciona um evento na mesma.   Debug o codigo que te mandei que consiguirá repetir os passos. Aguardo contato.   Abraços Atr Luiz Maia          
Responder

Gostei + 0

04/09/2009

Devmedia

Rubens,
ao ler a frase que vc escreveu no posts "Não seria possível uma solução no meu próprio código que eu enviei ?"
entendeu-se que vc estava pedindo que fosse codificado uma solução para o seu problema. Daí a resposta sobre o desenvolvimento.
Sim, você tem razão quando diz que temos que tirar suas dúvidas, afinal de contas, o nome do serviço é Suporte - Tira Dúvidas.
Por isso, como vc sinalizou não querer gravar em video, seria interessante que vc descrevesse em quê tem dúvidas para que o consultor possa responder mais objetivamente.
o diferencial desse suporte e de um fórum comum é que aqui vc encontra profissionais que lhe ajudaram, sem gambiarras, como vemos comumente.
Responder

Gostei + 0

05/09/2009

Rubens Cury

Olá Luiz,   Fiz uma tremenda confusão... ao descompactar o .zip criei duas pastas WebSiteBarra\WebSiteBarra e na tentativa de tentar organizar os arquivos para abrir, simplemente esqueci da pasta App_Code.   Por este motivo que eu não tinha entendido absolutamente nada, além disso eu não estava conseguindo nem mesmo debugar pois não compilava sem os arquivos do App_Code.   Conclusão... erroneamente entendi que você tinha me mandado uma "parte" de um código que nem sequer estava compilando, só para que eu pudesse olhar mais ou menos. Foi isso que originou a meu pedido de outro código e objeções em relação ao atendimento.   Agora sim abri corretamente, vou analisar e depois lhe darei um feedback.   Obrigado e desculpe-me pela falha!
Responder

Gostei + 0

08/09/2009

Luiz Maia

Ok Rubens,   Fico no aguardo. Abraços   Att Luiz Maia
Responder

Gostei + 0

08/09/2009

Rubens Cury

Olá Luiz,   Deu certo! Consegui através do código que enviou, aplicar a mesma estratégia no meu o que permitiu o funcionamento do que eu desejava.   Porém depois de quase tudo pronto, me surgiram 2 dúvidas...   1) Se o conceito de interface implementado ao meu WebUserControl não fosse aplicado conforme sugeriu o código que me enviou, não funcionaria ?   2) Notei na minha aplicação antiga que o WebUserControl inserido no MasterPage e o WebUserControl inserido no Default.aspx estavam em namespaces distintos. Isso poderia ter impedido o funcionamento correto dos delegates ?   Muito obrigado pela sua atenção, Rubens
Responder

Gostei + 0

09/09/2009

Luiz Maia

Ola Rubens, tudo bom com vc?   Seguinte:   1 - Quanto a interface, não testei sem ela, mas acredito que tenham outras maneiras de se fazer. 2 - Quanto a questão dos namespaces, não tinha me atentado para isto na sua aplicação. Realmente pode dar problemas sim, mas vc pode alterar os namespaces sem problemas, pq caso algum destes uc estiver dentro de uma pasta, o namespace assume o nome da pasta.   Abraços Att Luiz Maia
Responder

Gostei + 0

09/09/2009

Rubens Cury

Oi Luiz,   Sem problemas, testarei depois o comportamento da aplicação com os namespaces corretamente definidos.   Obrigado e até uma próxima!   Rubens Cury
Responder

Gostei + 0

09/09/2009

Luiz Maia

Falow Rubens, precisando é só falar. Estaremos a sua disposição.   Abraços Att Luiz Maia
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar