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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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); ... }
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);
...
}
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); ... }