public class Objet { // Un bouton private Button _btn1; // Event permettant de router le click vers un autre objet qui s'y abonne public delegate void RouteClickEventHandler(object sender, EventArgs e); public event RouteClickEventHandler RouteClickEvent = null; // .Ctor public Objet(Form unFormOuAjouterLeBouton) { // Un bouton de base _btn1 = new Button(); _btn1.Name = "Objet._btn1"; _btn1.Location = new Point(10,10); _btn1.Size = new Size(100,24); _btn1.Text = "click me !"; _btn1.Click += new EventHandler(_btn1_Click); // click local // Ajoute le bouton sur un formulaire lambda unFormOuAjouterLeBouton.Controls.Add(_btn1); } // Le click local void _btn1_Click(object sender, EventArgs e) { // Route vers les objets qui s'y sont abonnés if (RouteClickEvent != null) RouteClickEvent(_btn1, EventArgs.Empty); } }; ///////////// Dans MainWindow public partial class MainWindow : Form { // l'objet contenant les boutons et l'event de routage Objet m_obj = null; public MainWindow() { m_obj = new Objet(this); m_obj.RouteClickEvent += new Objet.RouteClickEventHandler(m_obj_RouteClickEvent); } // Le click routé void m_obj_RouteClickEvent(object sender, EventArgs e) { MessageBox.Show("Dans FormMAin, reception du click de " + (sender as Button).Name); } };
je voulais avoir l'abonnement à l'évènement click dans ma classe (où je crée le bouton)...
MainWindow { //Utiliser l'évènement ici! TaClass toto = new TaClass(); toto.evenement += etc... }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionSinon je n'aurai jamais un évènement sur chaque bouton!