Soyez le premier à donner votre avis sur cette source.
Vue 10 144 fois - Téléchargée 247 fois
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; class Affichage { private FormCollection nbforms;// = Application.OpenForms; private delegate void Modifier(Form parm_Form_Name, Control parm_Object_Name, object param, int type_modif); private Modifier Obj_Modifier; // constructeur public Affichage() { // initialisation du delegué nbforms = Application.OpenForms; Obj_Modifier = new Modifier(this.Modif); } #region Fonction lancement private void lancement(Object[] OBJ) { Form Form_Name = ((Form)OBJ[0]); Control Object_Name = ((Control)OBJ[1]); try { // test de l'accessibilité de l'objet if (Form_Name.Enabled) if (Object_Name.Enabled) Form_Name.Invoke(Obj_Modifier, OBJ); } catch { } } #endregion #region Remplacement public void set(string parm_Form_Name, string parm_Object_Name, object param) { Form Form_Name = (Form)nbforms[parm_Form_Name]; Control Object_Name = (Control)nbforms[parm_Form_Name].Controls[parm_Object_Name]; Object[] OBJ = new Object[4]; OBJ[0] = Form_Name; OBJ[1] = Object_Name; OBJ[2] = param; OBJ[3] = 1; lancement(OBJ); } public void set(Form parm_Form_Name, Control parm_Object_Name, object param) { Form Form_Name = parm_Form_Name; Control Object_Name = parm_Object_Name; Object[] OBJ = new Object[4]; OBJ[0] = Form_Name; OBJ[1] = Object_Name; OBJ[2] = param; OBJ[3] = 1; lancement(OBJ); } #endregion #region ajout public void setAd(string parm_Form_Name, string parm_Object_Name, object param) { Form Form_Name = (Form)nbforms[parm_Form_Name]; Control Object_Name = (Control)nbforms[parm_Form_Name].Controls[parm_Object_Name]; Object[] OBJ = new Object[4]; OBJ[0] = Form_Name; OBJ[1] = Object_Name; OBJ[2] = param; OBJ[3] = 2; lancement(OBJ); } public void setAd(Form parm_Form_Name, Control parm_Object_Name, object param) { Form Form_Name = (Form)parm_Form_Name; Control Object_Name = (Control)parm_Object_Name; Object[] OBJ = new Object[4]; OBJ[0] = Form_Name; OBJ[1] = Object_Name; OBJ[2] = param; OBJ[3] = 2; lancement(OBJ); } #endregion #region Suppression public void Dele(string parm_Form_Name, string parm_Object_Name) { Form Form_Name = (Form)nbforms[parm_Form_Name]; Control Object_Name = (Control)nbforms[parm_Form_Name].Controls[parm_Object_Name]; Object[] OBJ = new Object[4]; OBJ[0] = Form_Name; OBJ[1] = Object_Name; OBJ[2] = null; OBJ[3] = 3; lancement(OBJ); } public void Dele(Form parm_Form_Name, Control parm_Object_Name, object param) { Form Form_Name = (Form)parm_Form_Name; Control Object_Name = (Control)parm_Object_Name; Object[] OBJ = new Object[4]; OBJ[0] = Form_Name; OBJ[1] = Object_Name; OBJ[2] = null; OBJ[3] = 3; lancement(OBJ); } #endregion #region Fonction de modifiation du champ // Fonction de mise à jour private void Modif(Form parm_Form_Name, Control parm_Object_Name, object param, int type_modif) { // declaration d'un objet pour chaque controle des roles ListBox pt_ListBox; DataGridView pt_DataGridView; ComboBox pt_ComboBox; TextBox pt_TextBox; switch (type_modif) { // Ajout simple case 1: //// execution de la commande switch (parm_Object_Name.GetType().Name) { case "ListBox": pt_ListBox = (ListBox)parm_Object_Name; pt_ListBox.Items.Add(param.ToString()); break; case "ComboBox": pt_ComboBox = (ComboBox)parm_Object_Name; pt_ComboBox.Items.Add(param.ToString()); break; case "TextBox": pt_TextBox = (TextBox)parm_Object_Name; pt_TextBox.Text = param.ToString(); break; case "DataGridView": pt_DataGridView = (DataGridView)parm_Object_Name; pt_DataGridView.Rows.Clear(); pt_DataGridView.Rows.Add(param.ToString()); break; default: parm_Object_Name.Text = param.ToString(); break; } break; // Suppression et ajout remplacement case 2: //// execution de la commande switch (parm_Object_Name.GetType().Name) { case "ListBox": pt_ListBox = (ListBox)parm_Object_Name; pt_ListBox.Items.Add(param); break; case "ComboBox": pt_ComboBox = (ComboBox)parm_Object_Name; pt_ComboBox.Items.Add(param); break; case "TextBox": pt_TextBox = (TextBox)parm_Object_Name; pt_TextBox.Text += param.ToString(); break; case "DataGridView": pt_DataGridView = (DataGridView)parm_Object_Name; //pt_DataGridView.Rows.Clear(); pt_DataGridView.Rows.Add((object[])param); break; default: parm_Object_Name.Text += param.ToString(); break; } break; // Suppression case 3: //// execution de la commande switch (parm_Object_Name.GetType().Name) { case "ListBox": pt_ListBox = (ListBox)parm_Object_Name; pt_ListBox.Items.Clear(); break; case "ComboBox": pt_ComboBox = (ComboBox)parm_Object_Name; pt_ComboBox.Items.Clear(); break; case "TextBox": pt_TextBox = (TextBox)parm_Object_Name; pt_TextBox.Text = ""; break; case "DataGridView": pt_DataGridView = (DataGridView)parm_Object_Name; pt_DataGridView.Rows.Clear(); break; default: parm_Object_Name.Text = ""; break; } break; } } #endregion }
L'idée d'automatiser un peu la solution au cross thread calls est une très bonne idée (c'est vrai que c'est #%*$@ c'est histoire). Par contre je ne pense pas que ta méthode soit viable...
J'ai eu exactement le même problème et je suis passé par l'objet BackGroudWorker. J'attends aussi des commentaires de membres plus experimentés pour voir si ta méthode est bonne ... Ou pas !
++ !
L.S.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.