Bonjour ,
J'ai 2 formulaires et j'aimerais effectuer une action sur le formulaire 1 seulement si j'ai cliqué sur le bouton "OK" par exemple du formulaire 2 .
Quelqu 'un peut m'aiguiller sur la façon de m y prendre ?
merci
Version imprimable
Bonjour ,
J'ai 2 formulaires et j'aimerais effectuer une action sur le formulaire 1 seulement si j'ai cliqué sur le bouton "OK" par exemple du formulaire 2 .
Quelqu 'un peut m'aiguiller sur la façon de m y prendre ?
merci
Salut RideKick,
Le formulaire 2 est-il ouvert depuis le formulaire 1 ? Si tel est le cas tu pourrais faire renvoyer lors de la fermeture du formulaire 2 une valeur signifiant si oui ou non "OK" a bien été sélectionné, et bien sur la récupéré dans le formulaire 1.
oui le formulaire 2 est appelé par le formulaire 1 !
Je vois pas trop comment faire ceci ....:cry:
bonjour
Je pense que les delegateEvenHandler sont la solution a ton problème
Si tu ne trouve pas d'exemple dit le je t'en donnerai
Bonne chance
Je veux bien svp !
les codes que je trouvent sont pas tres comprehensibles !
merci bcp
Merci mais je ne pense pas queça convienne a mon probleme .
En fait j'ai un formulaire 1 avec un datagrid , en double-cliquant sur une ligne du datagrid j'ouvre le formulaire 2 destiné a editer les infos de la lignes clickée , puis en cliquant sur OK les modifications vont directement dans la base de données (sur laquelle est branché mon datagrid) !
Je veux juste savoir si l'utilisateur a cliqué sur Oki pour rafraichir le contenue du datagrid !
Merci de votre aide
Ma technique est modeste comparée aux DelegateEventHandler ;)
Néanmoins je procède comme ceci (attention mon code est en vb.net, mais l'adaptation doit être aisée):
Pour le formulaire 2:
Code:
1
2Private BoutonClic as Boolean = False
Dans la méthode gérant le l'évènement de clic sur le bouton:
Méthode d'ouverture du formulaire 2:Code:
1
2 BoutonClic = True
Code:
1
2
3
4
5 Public Function Ouvrir() as Boolean ShowDialog() Return BoutonClic End Function
Pour le formulaire 1:
Appel au formulaire 2:
Code:
1
2
3
4 If Myformulaire2.Ouvrir() = True Then 'Traitement adéquat End if
Voilà en gros, en espérant que ça puisse t'aider ! ;)
'jour
More simple :
Dans l'appel a ton form2, tu lui met un paramètre de type Form1 et tu lui balance ton instance.
En esperant que je t'ai embrouiller avec mon code pondu sous firefox (la flemme de créer un nouveau projet donc c'est du brouillon j'espere que je me suis planté XDCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 Public class Form1 : Form { /* ... ... */ public void lanceFormulaire2 ()// ma fonction qui affiche le 2eme form { Form2 Mon2emeForm = new Form2(this); Mon2emeForm.Show(); } public int maFonctiondeCalcul( int i) { return i * i; } /* ... */ }//fin de la classe Form1 public class Form2 : Form { private Form1 monForm1; public Form2(Form1 F1) // le constructeur du 2eme form qui prend une instance de form1 { monForm1 = F1; // initialisation de la donnée membre } public void monclicsurOK() { MessageBox.Show((F1.maFonctiondeCalcul(8)+5).toString()+" Année érotique ;)"); } }
Bon courage
Si tu veux essayer :
-Dans ta fenetre 1 :
Code:
1
2
3
4
5
6
7
8
9 fenetre2 f2 = new fenetre2(grid); f2.MdiParent = this; f2.ModifGridEvent += new delegatetEventHandler(Modif_Grid); f2.Show(); private void Modif_Grid(object sender, delegatetEventHandlere) { //recharge de ton grid ... }
- Dans la fenetre 2
Code:
1
2
3
4
5
6
7 public event delegatetEventHandler ModifGridEvent ; private void btClick(object sender, System.EventArgs e) { delegatetEventHandler valueArgs = new delegatetEventHandler(Modif_Grid); ModifGridEvent (this, valueArgs); this.Dispose(); }
-Creation de l'event
Code:
1
2
3
4
5
6
7
8
9
10
11
12 public class delegateObjectEventArgs : System.EventArgs { private Object pObjet; public Object Objet { get { return this.pObjet; } } public delegateObjectEventArgs(Object objet) { this.pObjet = objet; } } }
Voila pour moi un code un peu propre ...
Mais bon ...
Bonne chance
Merci a tous pour vos idées ,
J'ai opté pour l'optnio de notalp , par contre il me dis :
pour la ligneCitation:
Identificateur attendu
JE ne vois pas trop ce qu il manque si t as une idee stp ! merci encore pour vos aidesCitation:
private void Modif_Grid(object sender,delegatetEventHandlere )
PS : J'ai trouveé manquait un espace entre ...handler et e
mais j'ai l'erreur suivante :
Citation:
Le type ou le nom d'espace de noms 'delegateEventHandler' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)
Effectivement,
si tu crées l'event dans une classe à part , regarde le NAMESPACE par exemple,
"namespace MonAppli.Delegates"
ce qui t'imposeras de faire un :
"using MonAppli.Delegates" ...
NE trouvant pas la solution , j'ai modifié le probleme :
au clic sur le bouton du form2 j'ai ajouté la fermeture de celui ci , et j'ai reglé le pb comme ceci :
Form1 :
-------
Merci a tous pour votre coups de main !Citation:
private Form2 form2 = null ;
private void BoutonOuvrir_Click(object sender, EventArgs e)
{
form2 = new Form2() ;
form2.FormClosed += new FormClosedEventHandler(form2_FormClosed);
form2.show()
}
void form2_FormClosed(object sender, FormClosedEventArgs e){
form2.FormClosed += new FormClosedEventHandler(form2_FormClosed);
form2 = null;
//Instruction pour rafraichir le datagrid du form (1 donc actuellement)
}