Pergunta

Eu sou novo para UserControls, e ao mesmo tempo desenvolver o meu próprio controle eu encontrei um problema com mostrando eventos de meu controle na grade de propriedades em tempo de design. Se eu tenho alguns eventos no meu controle eu quero vê-los na grade de propriedade e se eu clicar duas vezes que eu quero ter um manipulador, da mesma forma que a Microsoft faz para seus controles.

Foi útil?

Solução

Eles devem aparecer automaticamente se não estou enganado. Certifique-se de que você construiu seu projeto, porém, ou alterações não serão propagadas para os designers abertos. E ter certeza que é a public evento também. (Eventos particulares / protegidas por direito não deve aparecer, porque eles não são acessíveis.)

Uma coisa que você pode fazer para tornar a experiência de design mais agradável do seu usuário é fazer algo como o seguinte:

    [Description("This event is raised when the user presses the enter key while the control has focus."),
    Category("Key")]
    public event EventHandler EnterPressed;

"Descrição" bit coloca uma boa mensagem no painel de descrição da janela de propriedade. A "categoria" puts bit-lo em uma determinada categoria (o padrão é Misc. No final).

A propósito, você não especificou uma língua ou ambiente, de modo que o acima pode precisar ser modificado se não for C # no Visual Studio 2005 +.

Outras dicas

Eu costumo usar esse padrão, para criar um evento personalizado em UserControls:

    #region MyEvent CUSTOM EVENT

    protected virtual void OnMyEvent(MyEventEventArgs e)
    {
        if (MyEvent != null)
            MyEvent(this, e);
    }

    public delegate void MyEventHandler(object sender, MyEventEventArgs e);
    public event MyEventHandler MyEvent;

    public class MyEventEventArgs : EventArgs
    {

    }

    #endregion MyEvent CUSTOM EVENT

Isto tem a mesma convenção de nomenclatura de eventos da Microsoft, você pode disparar OnMyEvent de dentro de seu controle, têm EventArgs personalizados, MyEvent alça de outros controles.

Você deve ser o uso Delegado no UserControl e elevá-la na página principal (página aspx) .Se desta forma não funcionou, você deve ter cuidado ao registrar UserControlID.It precisa diferem com outros UserControl.Each UserControl precisa de um ID.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top