- CAS A- depuis un Form enfant atteindre un contr=F4le du=20
Form Parent, par exemple, rendre invisible le=20
controle "ctrl".
Voici comment je proc=E8de :
1- dans frmParent, juste avant d'afficher frmEnfant, je=20
positionne le contr=F4le =E0 la fin de la collection Controls=20
de frmParent "ctrl.SendToBack();" pour =EAtre sur de=20
conna=EEtre son index (car sa place peut varier)
2- dans frmEnfant :=20
"ParentForm.Controls[(ParentForm.Controls.Count)-
1].visible=3Dfalse"
CONCLUSION : ce n'est pas du tout pratique et c'est risqu=E9=20
car le contr=F4le peut avoir chang=E9 de place dans Controls=20
entre 1 et 2
-CAS 2- Comment proc=E9der quand il s'agit de formulaires=20
qui n'ont pas de lien de parent=E9 ?
Passe ta forme principale au constructeur de la 2mé form.
Ex:
frm1 avec 1 bouton:
public Button bt1 = new Button();
//Là, tu appelles une 2ème Form // Et tu passe au constructeur l'instance de ta form en cours Form frm2 = new Form(this); frm2.Show();
Dans frm2, tu as le constructeur:
public Form(Form toto) { // Commme ton bouton est en public, tu peux faire toto.Enabled = false; }
Tu vois ce que je veux dire ou non ?
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com
"thierry" wrote:
- CAS A- depuis un Form enfant atteindre un contrôle du Form Parent, par exemple, rendre invisible le controle "ctrl". Voici comment je procède : 1- dans frmParent, juste avant d'afficher frmEnfant, je positionne le contrôle à la fin de la collection Controls de frmParent "ctrl.SendToBack();" pour être sur de connaître son index (car sa place peut varier) 2- dans frmEnfant : "ParentForm.Controls[(ParentForm.Controls.Count)- 1].visibleúlse" CONCLUSION : ce n'est pas du tout pratique et c'est risqué car le contrôle peut avoir changé de place dans Controls entre 1 et 2
-CAS 2- Comment procéder quand il s'agit de formulaires qui n'ont pas de lien de parenté ?
Merci de m'aider pour ces 2 cas...
Passe ta forme principale au constructeur de la 2mé form.
Ex:
frm1 avec 1 bouton:
public Button bt1 = new Button();
//Là, tu appelles une 2ème Form
// Et tu passe au constructeur l'instance de ta form en cours
Form frm2 = new Form(this);
frm2.Show();
Dans frm2, tu as le constructeur:
public Form(Form toto)
{
// Commme ton bouton est en public, tu peux faire
toto.Enabled = false;
}
Tu vois ce que je veux dire ou non ?
A+
-------------------
LEBRUN Thomas
http://morpheus.developpez.com
"thierry" wrote:
- CAS A- depuis un Form enfant atteindre un contrôle du
Form Parent, par exemple, rendre invisible le
controle "ctrl".
Voici comment je procède :
1- dans frmParent, juste avant d'afficher frmEnfant, je
positionne le contrôle à la fin de la collection Controls
de frmParent "ctrl.SendToBack();" pour être sur de
connaître son index (car sa place peut varier)
2- dans frmEnfant :
"ParentForm.Controls[(ParentForm.Controls.Count)-
1].visibleúlse"
CONCLUSION : ce n'est pas du tout pratique et c'est risqué
car le contrôle peut avoir changé de place dans Controls
entre 1 et 2
-CAS 2- Comment procéder quand il s'agit de formulaires
qui n'ont pas de lien de parenté ?
Passe ta forme principale au constructeur de la 2mé form.
Ex:
frm1 avec 1 bouton:
public Button bt1 = new Button();
//Là, tu appelles une 2ème Form // Et tu passe au constructeur l'instance de ta form en cours Form frm2 = new Form(this); frm2.Show();
Dans frm2, tu as le constructeur:
public Form(Form toto) { // Commme ton bouton est en public, tu peux faire toto.Enabled = false; }
Tu vois ce que je veux dire ou non ?
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com
"thierry" wrote:
- CAS A- depuis un Form enfant atteindre un contrôle du Form Parent, par exemple, rendre invisible le controle "ctrl". Voici comment je procède : 1- dans frmParent, juste avant d'afficher frmEnfant, je positionne le contrôle à la fin de la collection Controls de frmParent "ctrl.SendToBack();" pour être sur de connaître son index (car sa place peut varier) 2- dans frmEnfant : "ParentForm.Controls[(ParentForm.Controls.Count)- 1].visibleúlse" CONCLUSION : ce n'est pas du tout pratique et c'est risqué car le contrôle peut avoir changé de place dans Controls entre 1 et 2
-CAS 2- Comment procéder quand il s'agit de formulaires qui n'ont pas de lien de parenté ?
Merci de m'aider pour ces 2 cas...
LEBRUN Thomas
sur mon post d'avant, c'est
public Form(Form toto) { toto.bt1.Enabled = false; }
pour désactiver le bouton de la 1ere form depuis la 2ème par ex.
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com
"thierry" wrote:
- CAS A- depuis un Form enfant atteindre un contrôle du Form Parent, par exemple, rendre invisible le controle "ctrl". Voici comment je procède : 1- dans frmParent, juste avant d'afficher frmEnfant, je positionne le contrôle à la fin de la collection Controls de frmParent "ctrl.SendToBack();" pour être sur de connaître son index (car sa place peut varier) 2- dans frmEnfant : "ParentForm.Controls[(ParentForm.Controls.Count)- 1].visibleúlse" CONCLUSION : ce n'est pas du tout pratique et c'est risqué car le contrôle peut avoir changé de place dans Controls entre 1 et 2
-CAS 2- Comment procéder quand il s'agit de formulaires qui n'ont pas de lien de parenté ?
Merci de m'aider pour ces 2 cas...
sur mon post d'avant, c'est
public Form(Form toto)
{
toto.bt1.Enabled = false;
}
pour désactiver le bouton de la 1ere form depuis la 2ème par ex.
A+
-------------------
LEBRUN Thomas
http://morpheus.developpez.com
"thierry" wrote:
- CAS A- depuis un Form enfant atteindre un contrôle du
Form Parent, par exemple, rendre invisible le
controle "ctrl".
Voici comment je procède :
1- dans frmParent, juste avant d'afficher frmEnfant, je
positionne le contrôle à la fin de la collection Controls
de frmParent "ctrl.SendToBack();" pour être sur de
connaître son index (car sa place peut varier)
2- dans frmEnfant :
"ParentForm.Controls[(ParentForm.Controls.Count)-
1].visibleúlse"
CONCLUSION : ce n'est pas du tout pratique et c'est risqué
car le contrôle peut avoir changé de place dans Controls
entre 1 et 2
-CAS 2- Comment procéder quand il s'agit de formulaires
qui n'ont pas de lien de parenté ?
public Form(Form toto) { toto.bt1.Enabled = false; }
pour désactiver le bouton de la 1ere form depuis la 2ème par ex.
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com
"thierry" wrote:
- CAS A- depuis un Form enfant atteindre un contrôle du Form Parent, par exemple, rendre invisible le controle "ctrl". Voici comment je procède : 1- dans frmParent, juste avant d'afficher frmEnfant, je positionne le contrôle à la fin de la collection Controls de frmParent "ctrl.SendToBack();" pour être sur de connaître son index (car sa place peut varier) 2- dans frmEnfant : "ParentForm.Controls[(ParentForm.Controls.Count)- 1].visibleúlse" CONCLUSION : ce n'est pas du tout pratique et c'est risqué car le contrôle peut avoir changé de place dans Controls entre 1 et 2
-CAS 2- Comment procéder quand il s'agit de formulaires qui n'ont pas de lien de parenté ?
Merci de m'aider pour ces 2 cas...
thierry
Bonjour, Un grand merci pour ta réponse. Mais est-ce une bonne pratique que de faire ce qui suit pour rendre le Form1 accessible de n'importe quelle méthode du Form2 via la référence frmOrigine ?
//Là , tu appelles une 2ème Form // Et tu passe au constructeur l'instance de ta form en
cours
Form frm2 = new Form(this); frm2.Show();
Dans frm2, tu as le constructeur:
public Form(Form toto) { // Commme ton bouton est en public, tu peux faire toto.Enabled = false; }
Tu vois ce que je veux dire ou non ?
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com
"thierry" wrote:
- CAS A- depuis un Form enfant atteindre un contrôle
du
Form Parent, par exemple, rendre invisible le controle "ctrl". Voici comment je procède : 1- dans frmParent, juste avant d'afficher frmEnfant, je positionne le contrôle à la fin de la collection
Controls
de frmParent "ctrl.SendToBack();" pour être sur de connaître son index (car sa place peut varier) 2- dans frmEnfant : "ParentForm.Controls[(ParentForm.Controls.Count)- 1].visibleúlse" CONCLUSION : ce n'est pas du tout pratique et c'est
Bonjour,
Un grand merci pour ta réponse.
Mais est-ce une bonne pratique que de faire ce qui suit
pour rendre le Form1 accessible de n'importe quelle
méthode du Form2 via la référence frmOrigine ?
//Là , tu appelles une 2ème Form
// Et tu passe au constructeur l'instance de ta form en
cours
Form frm2 = new Form(this);
frm2.Show();
Dans frm2, tu as le constructeur:
public Form(Form toto)
{
// Commme ton bouton est en public, tu peux faire
toto.Enabled = false;
}
Tu vois ce que je veux dire ou non ?
A+
-------------------
LEBRUN Thomas
http://morpheus.developpez.com
"thierry" wrote:
- CAS A- depuis un Form enfant atteindre un contrôle
du
Form Parent, par exemple, rendre invisible le
controle "ctrl".
Voici comment je procède :
1- dans frmParent, juste avant d'afficher frmEnfant, je
positionne le contrôle à la fin de la collection
Controls
de frmParent "ctrl.SendToBack();" pour être sur de
connaître son index (car sa place peut varier)
2- dans frmEnfant :
"ParentForm.Controls[(ParentForm.Controls.Count)-
1].visible=false"
CONCLUSION : ce n'est pas du tout pratique et c'est
Bonjour, Un grand merci pour ta réponse. Mais est-ce une bonne pratique que de faire ce qui suit pour rendre le Form1 accessible de n'importe quelle méthode du Form2 via la référence frmOrigine ?
//Là , tu appelles une 2ème Form // Et tu passe au constructeur l'instance de ta form en
cours
Form frm2 = new Form(this); frm2.Show();
Dans frm2, tu as le constructeur:
public Form(Form toto) { // Commme ton bouton est en public, tu peux faire toto.Enabled = false; }
Tu vois ce que je veux dire ou non ?
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com
"thierry" wrote:
- CAS A- depuis un Form enfant atteindre un contrôle
du
Form Parent, par exemple, rendre invisible le controle "ctrl". Voici comment je procède : 1- dans frmParent, juste avant d'afficher frmEnfant, je positionne le contrôle à la fin de la collection
Controls
de frmParent "ctrl.SendToBack();" pour être sur de connaître son index (car sa place peut varier) 2- dans frmEnfant : "ParentForm.Controls[(ParentForm.Controls.Count)- 1].visibleúlse" CONCLUSION : ce n'est pas du tout pratique et c'est
Maintenant, de là à te dire si oui ou non, c'est une bonne pratique, je ne saurais le faire.
Un conseil, essaye de passer un coup de FxCop (http://www.gotdotnet.com/team/fxcop/) sur ton EXE pour voir si l'on te fait une "remarque" sur cette méthode.
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com
"thierry" wrote:
Bonjour, Un grand merci pour ta réponse. Mais est-ce une bonne pratique que de faire ce qui suit pour rendre le Form1 accessible de n'importe quelle méthode du Form2 via la référence frmOrigine ?
Maintenant, de là à te dire si oui ou non, c'est une bonne pratique, je ne
saurais le faire.
Un conseil, essaye de passer un coup de FxCop
(http://www.gotdotnet.com/team/fxcop/) sur ton EXE pour voir si l'on te fait
une "remarque" sur cette méthode.
A+
-------------------
LEBRUN Thomas
http://morpheus.developpez.com
"thierry" wrote:
Bonjour,
Un grand merci pour ta réponse.
Mais est-ce une bonne pratique que de faire ce qui suit
pour rendre le Form1 accessible de n'importe quelle
méthode du Form2 via la référence frmOrigine ?
Maintenant, de là à te dire si oui ou non, c'est une bonne pratique, je ne saurais le faire.
Un conseil, essaye de passer un coup de FxCop (http://www.gotdotnet.com/team/fxcop/) sur ton EXE pour voir si l'on te fait une "remarque" sur cette méthode.
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com
"thierry" wrote:
Bonjour, Un grand merci pour ta réponse. Mais est-ce une bonne pratique que de faire ce qui suit pour rendre le Form1 accessible de n'importe quelle méthode du Form2 via la référence frmOrigine ?
Mais est-ce une bonne pratique que de faire ce qui suit pour rendre le Form1 accessible de n'importe quelle méthode du Form2 via la référence frmOrigine ?
Dans le cas qui vous concerne, non. 1) Il faut éviter de déclarer des variables publiques , déclarez les internes et utilisez les accesseurs. 2) Ensuite, ne passez pas une variable de type Form1, mais une interface adaptée que Form1 implémentera. En gros, un truc du style :
public Interface IHideableControlOwner { control ControlToHide { get; } }
public Form1:System.windows.Forms.Form, IHideableControlOwner {
private Button buttonOk; public control IHideableControlOwner.ControlToHide { get { return buttonOk; } } }
Ainsi, vous pourrez réutiliser le code manipulant les IHideableControlOwner sur une autre feuille, et si jamais vous faîtes des modifications sur votre feuille, vous n'aurez pas à les répercuter ailleurs.
-- Zazar
Bonjour,
Mais est-ce une bonne pratique que de faire ce qui suit
pour rendre le Form1 accessible de n'importe quelle
méthode du Form2 via la référence frmOrigine ?
Dans le cas qui vous concerne, non.
1) Il faut éviter de déclarer des variables publiques , déclarez les
internes et utilisez les accesseurs.
2) Ensuite, ne passez pas une variable de type Form1, mais une interface
adaptée que Form1 implémentera.
En gros, un truc du style :
public Interface IHideableControlOwner {
control ControlToHide {
get;
}
}
public Form1:System.windows.Forms.Form, IHideableControlOwner {
private Button buttonOk;
public control IHideableControlOwner.ControlToHide {
get {
return buttonOk;
}
}
}
Ainsi, vous pourrez réutiliser le code manipulant les IHideableControlOwner
sur une autre feuille, et si jamais vous faîtes des modifications sur votre
feuille, vous n'aurez pas à les répercuter ailleurs.
Mais est-ce une bonne pratique que de faire ce qui suit pour rendre le Form1 accessible de n'importe quelle méthode du Form2 via la référence frmOrigine ?
Dans le cas qui vous concerne, non. 1) Il faut éviter de déclarer des variables publiques , déclarez les internes et utilisez les accesseurs. 2) Ensuite, ne passez pas une variable de type Form1, mais une interface adaptée que Form1 implémentera. En gros, un truc du style :
public Interface IHideableControlOwner { control ControlToHide { get; } }
public Form1:System.windows.Forms.Form, IHideableControlOwner {
private Button buttonOk; public control IHideableControlOwner.ControlToHide { get { return buttonOk; } } }
Ainsi, vous pourrez réutiliser le code manipulant les IHideableControlOwner sur une autre feuille, et si jamais vous faîtes des modifications sur votre feuille, vous n'aurez pas à les répercuter ailleurs.