ASP.NET UserControl e DefaultEvent
-
08-06-2019 - |
Pergunta
Estrutura de tópicos
OK, eu tenho o Google tinha isso e já esperando uma grande e gordo NÃO!! Mas eu pensei que eu deveria pedir porque eu sei que por vezes pode ser estranho, pequena jóia de conhecimento à espreita em povos cabeça ^_^
Eu estou trabalhando meu caminho através de alguns exercícios em um livro de estudo, e este exercício é Controlos de Utilizador.Eu tenho montada um controle e gostaria de definir o DefaultEvent para ele (depois de ter feito isso para controlos anteriores) então, quando eu clicar duas vezes, o evento padrão criado é tudo o que eu especificar que ele seja.
NOTA: Este é um padrão de Controle de Usuário (.ascx), NÃO um personalizados prestados controle.
Código Actual
Aqui é a classe de evento e definição:
[System.ComponentModel.DefaultEvent("OKClicked")]
public partial class AddressBox : System.Web.UI.UserControl
{
public event EventHandler OKClicked;
Resultado Atual
Agora, quando eu dê um clique duplo o controle quando ele está em uma página ASPX, o seguinte é criado:
protected void AddressBox1_Load(object sender, EventArgs e)
{
}
Não é bem o que eu estava esperando!Então, a minha pergunta:
É possível definir um DefaultEvent para um UserControl?É um hack?Se ele [não], é que há uma razão?
Nota Lado:Como é que vamos colocar caracteres de sublinhado no código?Eu não consigo colocar e escapar char em?
Solução
Aqui é um possível a resposta, sem a realização de testes (como martin).
No reflector, você vai ver que o DefaultEventAttribute permite próprio ser herdada.No reflector, você verá que a classe UserControl tem evento padrão definido para o evento Load.
Assim, a possível razão é que mesmo que você está decorando seu controle de usuário com o evento padrão do OKClick, VS pode ainda estar pensando que o evento padrão é carregar, na medida em que é herdado do UserControl cujo padrão de evento é de Carga.
Apenas um alto nível de adivinhar o que pode estar acontecendo.
Outras dicas
OK, eu verifiquei isso, Herdar da WebControl, ao invés de incluir UserControl..Tudo funcionou bem.
Parece Darren Kopp leva a coroa para este!Obrigado pela contribuição!