Bonjour
Comment déterminer si un évènement MdiChildActivate est propvoqué par un
click dans un sous menu (par exemple mnuAccess) qui affiche une nouvelle
feuille fille suivant l'item cliqué, ou par un clic dans un menu
MdiListItem
qui permet de passer d'une feuille fille ouverte à une autre. Je souhaite
différencier le traitement dans MdiChildActivate suivant son origine.
En complément, comment agissent les évènements d'un menu MdiListItem, j'ai
testé click, popup et select, et cela me semble assez obscur quant aux
résultats...
Merci
Bonjour
Comment déterminer si un évènement MdiChildActivate est propvoqué par un
click dans un sous menu (par exemple mnuAccess) qui affiche une nouvelle
feuille fille suivant l'item cliqué, ou par un clic dans un menu
MdiListItem
qui permet de passer d'une feuille fille ouverte à une autre. Je souhaite
différencier le traitement dans MdiChildActivate suivant son origine.
En complément, comment agissent les évènements d'un menu MdiListItem, j'ai
testé click, popup et select, et cela me semble assez obscur quant aux
résultats...
Merci
Bonjour
Comment déterminer si un évènement MdiChildActivate est propvoqué par un
click dans un sous menu (par exemple mnuAccess) qui affiche une nouvelle
feuille fille suivant l'item cliqué, ou par un clic dans un menu
MdiListItem
qui permet de passer d'une feuille fille ouverte à une autre. Je souhaite
différencier le traitement dans MdiChildActivate suivant son origine.
En complément, comment agissent les évènements d'un menu MdiListItem, j'ai
testé click, popup et select, et cela me semble assez obscur quant aux
résultats...
Merci
Merci de ta réponse.
J'ai fait comme indiqué, en adaptant à mon code, tout au moins en
essayant,
mais il y a un os.
Dans la section déclaration de la classe frmAccueil (la feuille mère)
public event System.EventHandler MySpecialEvent;
bool NewFille;
Dans le constructeur de la classe:
this.MySpecialEvent += new EventHandler(frmAccueil_MySpecialEvent);
Dans chaque gestionnaire d'évènement de menu d'ouverture d'une nouvelle
frm
fille (ici menuAuteur):
private void mnuAuteur_Click(object sender, System.EventArgs e)
{
MySpecialEvent(mnuAcces, null);
frmAuteurs childAuteurs = new frmAuteurs();
childAuteurs.MdiParent = this;
childAuteurs.Show();
}
Le gestionnaire d'évènement MySpécialEvent:
private void frmAccueil_MySpecialEvent(object sender, EventArgs e)
{
if (sender == mnuAcces)
{
NewFille = true;
}
Pour finir, dans le gestionnaire d'évènement MdiChildActivate (sur
ouverture
d'une nouvelle frm fille):
private void frmAccueil_MdiChildActivate(object sender,
System.EventArgs
e)
{
if (NewFille == true)
{
string TextSender = ((frmAccueil)sender).Text;
string[] NomFilles = new string[3]{"Auteurs", "Editeurs",
"Livres"};
string NomMdiActivate = "";
int Contient;
------- code pour activer ou désactiver les menus de façon à
n'afficher qu'une seule instance d'une même feuille fille.
En pas à pas, le code s'effectue sans aucun problème pour l'ouverture
d'une
nouvelle feuille fille. Par contre, lors du passage d'une feuille à
l'autre
par le biais du menu "Windows" MdiListItem, on ne passe pas sur
l'èvènement
MySpecialEvent. NewFille est dinc à false et le code de
frmAccueil_MdiChildActivate ne s'exécute donc pas.
Afin d'être sûr de parler des mêmes éléments, j'ai une barre de menus
(mnuAccueil) dans laquelle j'ai notamment deux menus (mnuAcces et
mnuWindows). Le menu mnuAccueil permet d'ouvrir une instance des feuilles
filles (frmAuteurs et frmEditeurs), et l'évènement MdiChildActivate gère
l'accès aux menus (activés ou non selon qu'il existe déjà une instance de
la
feuille corresponante).
J'avais essayé d'utiliser un évènement du menu Windows pour passer un
paramètre, et c'est à cette occasion que j'ai pu constater qu'il semble
impossible de se servir de ces évènements. L'esprit était quelque peu
identique à ce que tu m'as indiqué, mais impossible semble-t-ol à mettre
en
oeuvre de ce côté...
Voilà. Qu'est-ce que j'ai loupé?
Merci
Merci de ta réponse.
J'ai fait comme indiqué, en adaptant à mon code, tout au moins en
essayant,
mais il y a un os.
Dans la section déclaration de la classe frmAccueil (la feuille mère)
public event System.EventHandler MySpecialEvent;
bool NewFille;
Dans le constructeur de la classe:
this.MySpecialEvent += new EventHandler(frmAccueil_MySpecialEvent);
Dans chaque gestionnaire d'évènement de menu d'ouverture d'une nouvelle
frm
fille (ici menuAuteur):
private void mnuAuteur_Click(object sender, System.EventArgs e)
{
MySpecialEvent(mnuAcces, null);
frmAuteurs childAuteurs = new frmAuteurs();
childAuteurs.MdiParent = this;
childAuteurs.Show();
}
Le gestionnaire d'évènement MySpécialEvent:
private void frmAccueil_MySpecialEvent(object sender, EventArgs e)
{
if (sender == mnuAcces)
{
NewFille = true;
}
Pour finir, dans le gestionnaire d'évènement MdiChildActivate (sur
ouverture
d'une nouvelle frm fille):
private void frmAccueil_MdiChildActivate(object sender,
System.EventArgs
e)
{
if (NewFille == true)
{
string TextSender = ((frmAccueil)sender).Text;
string[] NomFilles = new string[3]{"Auteurs", "Editeurs",
"Livres"};
string NomMdiActivate = "";
int Contient;
------- code pour activer ou désactiver les menus de façon à
n'afficher qu'une seule instance d'une même feuille fille.
En pas à pas, le code s'effectue sans aucun problème pour l'ouverture
d'une
nouvelle feuille fille. Par contre, lors du passage d'une feuille à
l'autre
par le biais du menu "Windows" MdiListItem, on ne passe pas sur
l'èvènement
MySpecialEvent. NewFille est dinc à false et le code de
frmAccueil_MdiChildActivate ne s'exécute donc pas.
Afin d'être sûr de parler des mêmes éléments, j'ai une barre de menus
(mnuAccueil) dans laquelle j'ai notamment deux menus (mnuAcces et
mnuWindows). Le menu mnuAccueil permet d'ouvrir une instance des feuilles
filles (frmAuteurs et frmEditeurs), et l'évènement MdiChildActivate gère
l'accès aux menus (activés ou non selon qu'il existe déjà une instance de
la
feuille corresponante).
J'avais essayé d'utiliser un évènement du menu Windows pour passer un
paramètre, et c'est à cette occasion que j'ai pu constater qu'il semble
impossible de se servir de ces évènements. L'esprit était quelque peu
identique à ce que tu m'as indiqué, mais impossible semble-t-ol à mettre
en
oeuvre de ce côté...
Voilà. Qu'est-ce que j'ai loupé?
Merci
Merci de ta réponse.
J'ai fait comme indiqué, en adaptant à mon code, tout au moins en
essayant,
mais il y a un os.
Dans la section déclaration de la classe frmAccueil (la feuille mère)
public event System.EventHandler MySpecialEvent;
bool NewFille;
Dans le constructeur de la classe:
this.MySpecialEvent += new EventHandler(frmAccueil_MySpecialEvent);
Dans chaque gestionnaire d'évènement de menu d'ouverture d'une nouvelle
frm
fille (ici menuAuteur):
private void mnuAuteur_Click(object sender, System.EventArgs e)
{
MySpecialEvent(mnuAcces, null);
frmAuteurs childAuteurs = new frmAuteurs();
childAuteurs.MdiParent = this;
childAuteurs.Show();
}
Le gestionnaire d'évènement MySpécialEvent:
private void frmAccueil_MySpecialEvent(object sender, EventArgs e)
{
if (sender == mnuAcces)
{
NewFille = true;
}
Pour finir, dans le gestionnaire d'évènement MdiChildActivate (sur
ouverture
d'une nouvelle frm fille):
private void frmAccueil_MdiChildActivate(object sender,
System.EventArgs
e)
{
if (NewFille == true)
{
string TextSender = ((frmAccueil)sender).Text;
string[] NomFilles = new string[3]{"Auteurs", "Editeurs",
"Livres"};
string NomMdiActivate = "";
int Contient;
------- code pour activer ou désactiver les menus de façon à
n'afficher qu'une seule instance d'une même feuille fille.
En pas à pas, le code s'effectue sans aucun problème pour l'ouverture
d'une
nouvelle feuille fille. Par contre, lors du passage d'une feuille à
l'autre
par le biais du menu "Windows" MdiListItem, on ne passe pas sur
l'èvènement
MySpecialEvent. NewFille est dinc à false et le code de
frmAccueil_MdiChildActivate ne s'exécute donc pas.
Afin d'être sûr de parler des mêmes éléments, j'ai une barre de menus
(mnuAccueil) dans laquelle j'ai notamment deux menus (mnuAcces et
mnuWindows). Le menu mnuAccueil permet d'ouvrir une instance des feuilles
filles (frmAuteurs et frmEditeurs), et l'évènement MdiChildActivate gère
l'accès aux menus (activés ou non selon qu'il existe déjà une instance de
la
feuille corresponante).
J'avais essayé d'utiliser un évènement du menu Windows pour passer un
paramètre, et c'est à cette occasion que j'ai pu constater qu'il semble
impossible de se servir de ces évènements. L'esprit était quelque peu
identique à ce que tu m'as indiqué, mais impossible semble-t-ol à mettre
en
oeuvre de ce côté...
Voilà. Qu'est-ce que j'ai loupé?
Merci
Effectivement, les événements de ton menu Windows
Lorsque la feuille est fermée (gestion de l'événement
Effectivement, les événements de ton menu Windows
Lorsque la feuille est fermée (gestion de l'événement
Effectivement, les événements de ton menu Windows
Lorsque la feuille est fermée (gestion de l'événement
Effectivement, les événements de ton menu Windows
Lorsque la feuille est fermée (gestion de l'événement
Effectivement, les événements de ton menu Windows
Lorsque la feuille est fermée (gestion de l'événement
Effectivement, les événements de ton menu Windows
Lorsque la feuille est fermée (gestion de l'événement