Bonjour à tous, je bloque sur l'appel par reflection d'une méthode.
Voici le code du formulaire frm_DelOd, j'ai plusieurs formulaire qui sont appelés depuis un formulaire principale.
Ils contiennent tous un " void frm_Calling(Control cntrl, MethodInvoker mthInvoke) "
Dans mon code principale je veux effectuer sur tous mes formulaires ouverts un appel via frm_Calling, soit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public partial class frm_DelOld : Form { delegate void myDelegate(Control cntrl, MethodInvoker mthInvoke); private void myMethod(Control cntrl, MethodInvoker mthInvoke) { if (InvokeRequired) { this.Invoke(new MethodInvoker(delegate { myMethod(cntrl, mthInvoke); })); return; } else { cntrl.Invoke(mthInvoke); } } public void frm_Calling(Control cntrl, MethodInvoker mthInvoke) { myDelegate myDlgt = new myDelegate(myMethod); myDlgt.Invoke(cntrl, mthInvoke); } }
Bon j'ai une erreur sur le frm.BeginInvoke(getMyMethod) car c'est juste un MethodInfo ... comment dois-je faire pour appeler le delegate ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 foreach (Form frm in Application.OpenForms) { try { Type myType = frm.GetType(); System.Reflection.MethodInfo getMyMethod = myType.GetMethod("frm_Calling"); // Vérifier que le getMyMethod existe bien avant de poursuivre... if (!frm.IsAccessible) { // frm.BeginInvoke(getMyMethod(frm, new MethodInvoker(BringToFront)); // Erreur car bien sur c'est pas getMyMethod qu'il faut que j'appelle } } catch (Exception ex) { } }
Partager