OVH Cloud OVH Cloud

Router le Click d'un Toolbar vers un formulaire

1 réponse
Avatar
Pierre
Bonjour,
Coment procéder pour router les clicks de la barre d'outils principale
vers des formulaires particuliers ?
Par exemple dans une application multiformulaires de base de données. je
souhaite créer une seule barre d'outils de manipulation des données pour
l'ensemble des formulaires de saisie/modification. de façon à interpréter le
Click selon le formulaire ouvert ou en avant plan.
Je n'arriver pas à trouver un procécé pour transmettre le click du Toolbar
vers le Form courant.

Même un début de piste me mettra surement sur la bonne voie.

Merci pour votre aide

1 réponse

Avatar
Boris Sargos
Salut Pierre. J'ai deux solutions à te proposer. N'étant pas un spécialiste
C#, elles sont simples mais peu élégantes. A mons avis, tu y as déjà pensé.
Voilà:
1 - pour chaque form concernée, tu lui ajoutes un capteur d'évènement
OnClick de ta ToolBar, et tu testes si cette form est la form active. Ca
doit ressembler à ça :
// Constructeur
public MyChildForm() {
this.MDIParent.MyToolBar.Click += new
EventHandler(OnToolBarClick);
...
}

// Capteur
protected void OnToolBarClick(object sender, ToolBarEventArgs e) {
if(this.MDIParent.ActiveForm == this) { // Là je ne suis
pas sûr de la syntaxe
// Ton code ici ...
}
}
Remarque : tu peux utiliser ce code dans une classe de base (pourquoi pas
abstraite) dont tous tes form dériveraient.

2 - Ou alors, plus directement, tu ajoutes un unique capteur dans ta
MDIForm, qui elle renvoie l'évènement à la form active. Cette méthode est
peut-être plus efficace à condition de créer une classe abstraite qui
contiendrait toutes les réponses aux évènements. Je ne peux pas être très
clair, car je ne connais pas ton problème. Mais je pense que c'est comme ça
qu'il faudrait faire :
// Constructeur
public MyMDIForm() {
this..MyToolBar.Click += new EventHandler(OnToolBarClick);
...
}

// Capteur
protected void (object sender, ToolBarEventArgs e) {
MyChildForm activeform = (MyChildForm) this.ActiveForm;
switch (e.Index) {
case 1 :
activeform .ExecuteAction1();
case 2 :
activeform .ExecuteAction2();
...
}

J'espère t'avoir aidé.

}