J'ai créé un contrôle où d'autres développeurs peuvent créer une instance et l'utiliser. Il y a un clic de bouton dans le contrôle. Comment puis-je permettre aux développeurs de brancher leur propre code dans une certaine partie de mon contrôle? Je ne suis pas sûr si ou comment exactement utiliser un délégué ou un événement dans ce scénario. Quelqu'un peut-il aider dans l'exemple ci-dessous:Ajouter une propriété de délégué ou d'événement à cette classe?
public class MyControl : CompositeControl
{
...
void btnSubmit_Click(object sender, EventArgs e)
{
//DO SOMETHING
if (success)
{
//CALL DEVELOPER'S LOGIC
}
}
}
Dans le code des développeurs, comment peuvent-ils passer dans leur logique lorsque le bouton clic de la commande est réussie?
protected override void CreateChildControls()
{
var ctlMyControl = new MyControl();
//ADD SuccessCode() TO ctlMyControl
//SO IT IS TRIGGERED ON SUCCESS
//MAYBE SOMETHING LIKE:
//ctlMyControl.SuccessEvent = SuccessCode()??
this.Control.Add(ctlMyControl);
}
protected void SuccessCode()
{
//DO SOMETHING
}
Comment mettre à jour MyControl pour permettre cela?
Je crois que la signature de EventHandler est (expéditeur d'objet, EventArgs e) mais votre gestionnaire n'a qu'une signature de (EventArgs e). Je ne pense pas que ça marchera comme ça? – Doug
@Doug: Cela fonctionne. Lisez-le plus attentivement. Ce n'est pas un gestionnaire. – SLaks
Ha oui je l'ai mal lu - Merci pour l'astuce ci-dessous btw, je ne savais pas qu'il y avait un membre "vide" statique de la classe EventArgs. – Doug