Domanda

Sono nuovo di controlli utente, e sviluppando il mio controllo ho trovato un problema con mostrando eventi del mio controllo nella griglia delle proprietà in fase di progettazione. Se ho alcuni eventi in mio controllo voglio vederli nella griglia proprietà e se si fa doppio clic che voglio avere un gestore, nello stesso modo in cui Microsoft fa per i suoi controlli.

È stato utile?

Soluzione

Essi dovrebbero apparire automaticamente se non mi sbaglio. Assicurati di aver costruito il progetto però, o modifiche non si propagano ad aprire i progettisti. E assicurarsi che sia un public evento troppo. (Eventi private / protette giustamente non dovrebbero presentarsi perché non sono accessibili.)

Una cosa si può fare per rendere più piacevole l'esperienza di progettazione per l'utente è quello di fare qualcosa di simile al seguente:

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

Il bit "descrizione" mette un bel messaggio nel pannello descrizione della finestra delle proprietà. Il bit "categoria" mette in una certa categoria (il valore predefinito è Misc. Alla fine).

A proposito, non avete specificato una lingua o ambiente, in modo che il potrebbe essere necessario sopra per essere modificato se non è C # in Visual Studio 2005 +.

Altri suggerimenti

Io di solito uso questo schema, per creare un evento personalizzato in controlli utente:

    #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

Questa ha la stessa convenzione di denominazione di eventi Microsoft, si può sparare OnMyEvent da dentro il vostro controllo, hanno EventArgs personalizzati, gestire MyEvent da altri controlli.

Si dovrebbe essere l'uso delegato al controllo utente e sollevarlo a pagina principale (pagina aspx) .Se questo modo non ha funzionato, si deve fare attenzione quando il registro UserControlID.It deve differiscono con altri UserControl.Each UserControl bisogno di un ID.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top