Impossible d acceder aux controle de mon fomulaire
marclas
Messages postés54Date d'inscriptiondimanche 9 septembre 2007StatutMembreDernière intervention22 août 2012
-
26 avril 2012 à 05:18
marclas
Messages postés54Date d'inscriptiondimanche 9 septembre 2007StatutMembreDernière intervention22 août 2012
-
26 avril 2012 à 16:40
bonjour,
je desire rendre mon applicationn le plus modulable possible, pour cela j'utilise des classes. mais je n arrive pas a partir de ces classes a renseigner mon formulaire principal. comment proceder? merci de m aider. voila mon code ci joint.
--une classe pour charger mes parametres,
public static class Utils_Load_Parametrage
{
static string strChaine = string.Empty;
public static DataSet Load_Parametre(int param)
{
DataSet ds = new DataSet();
switch (param)
{
case 1:
strChaine = "TypeTitre";
break;
case 2:
strChaine = "Categorie";
break;
case 3:
strChaine = "Nationalite";
break;
case 4:
strChaine = "PosteID";
break;
}
ds = ExecuteRequeteParam.ACTIONExecuteRequeteRetourneDataSetText( strChaine );
strChaine = string.Empty;
return ds;
}
public static bool Create_Dossier(string DOS_ID, string PID_CODE, string TIT_CODE, string NAT_CODE, string DOS_NOBR, string DOS_NODE, decimal DOS_VERSEMENT, string DOS_TYDE, string DOS_NOPREC, string DOS_NOM, string DOS_PRENOM, System.DateTime DOS_DDN, string DOS_SEX, string DOS_LNAIS, string DOS_CONTACT, string DOS_NPERE, string DOS_NMERE, string DOS_PROF, int DOS_TAILLE, string DOS_LRED, System.DateTime DOS_DTEN, string CAT_CODE)
{
strChaine = "INSERT INTO CSR_DOSSIER ( DOS_ID," + "PID_CODE," + "TIT_CODE," + "NAT_CODE," + "DOS_NOBR," + "DOS_NODE," + "DOS_VERSEMENT," + "DOS_TYDE," + "DOS_NOPREC," + "DOS_NOM," + "DOS_PRENOM," + "DOS_DDN," + "DOS_SEX," + "DOS_LNAIS," + "DOS_CONTACT," + "DOS_NPERE," + "DOS_NMERE," + "DOS_PROF," + "DOS_TAILLE," + "DOS_LRED," + "DOS_DTEN," + "CAT_CODE)" + "VALUES(@DOS_ID, @PID_CODE," + "@TIT_CODE," + "@NAT_CODE," + "@DOS_NOBR," + "@DOS_NODE," + "@DOS_VERSEMENT," + "@DOS_TYDE," + "@DOS_NOPREC," + "@DOS_NOM," + "@DOS_PRENOM," + "@DOS_DDN," + "@DOS_SEX," + "@DOS_LNAIS," + "@DOS_CONTACT," + "@DOS_NPERE," + "@DOS_NMERE," + "@DOS_PROF," + "@DOS_TAILLE," + "@DOS_LRED," + "@DOS_DTEN," + "@CAT_CODE)";
ExecuteRequeteParam.ACTIONExecuteRequeteSansRetourText(strChaine);
strChaine = string.Empty;
return true;
}
}
}
2- une classe qui execute les requetes
public static class ExecuteRequeteParam
{ //initialisation de la connexion à la base de données SQL Server
private static SqlConnection m_Connexion;
//déclaration de l'objet command
private static SqlCommand m_commande;
/// Instancier et initialiser les objets de connecxion
public static void InitConnexionMobileText()
{
try
{
//instancier l'objet de connexion
m_Connexion = new SqlConnection(Prj_RECLACSR.Properties.Settings .Default .cnStr );
//Ouvrir la connexion à la bd
m_Connexion.Open();
//creer la commande et indiquer le type de commande
m_commande = m_Connexion.CreateCommand();
m_commande.CommandType = CommandType.Text;
}
catch (Exception ex)
{
//lever une exception et l'ecrire dans le journal d'événement windows
EventLog.GetEventLogs(ex.Message );
}
}
/// Ferme la connexion à la base de données et libere les ressources
public static void Dispose()
{
m_commande.Dispose();
m_Connexion.Close();
m_commande = null;
m_Connexion = null;
}
#region "Fonctions d'aide - Requetes dynamiques mode texte"
public static void ACTIONExecuteRequeteSansRetourText(string chaineSql)
{
InitConnexionMobileText();
m_commande.CommandText = chaineSql;
try
{
m_commande.ExecuteNonQuery();
}
catch (Exception ex)
{
// ReSharper disable PossibleIntendedRethrow
throw ex;
// ReSharper restore PossibleIntendedRethrow
}
finally
{
Dispose();
}
}
/// Exécute une requete sql dynamique et retroune un dataset
public static DataSet ACTIONExecuteRequeteRetourneDataSetText(string chaineSql)
{
InitConnexionMobileText();
m_commande.CommandText = chaineSql;
try
{
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(m_commande);
da.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
Dispose();
}
}
#endregion
}
3- une classe qui gere diverses fonction
"la j ai creer une nouvelle instance de formulaire afin d avoir accces au controle a renseigner, mais lors de l appel effectivement ceci ne se voit pas"
public static class Utils_Proc_Func
{
public static void Call_Parametres()
{
using (F_Main unForm = new F_Main())
{
//Les titres
DataSet dsTitre = new DataSet();
dsTitre = Utils_Load_Parametrage.Load_Parametre(1);
for (int i = 0; i <= dsTitre.Tables[0].Rows.Count - 1; i++)
{
unForm.cbTITRE.Items.Add(dsTitre.Tables[0].Rows[i][1].ToString());
}
//Les categories
// ReSharper disable RedundantAssignment
DataSet dsCategorie = new DataSet();
// ReSharper restore RedundantAssignment
dsCategorie = Utils_Load_Parametrage.Load_Parametre(2);
for (int j = 0; j <= dsCategorie.Tables[0].Rows.Count - 1; j++)
{
unForm.cbCat.Items.Add(dsCategorie.Tables[0].Rows[j][0].ToString());
}
//Les nationalites
DataSet dsNationalite = new DataSet();
dsNationalite = Utils_Load_Parametrage.Load_Parametre(3);
for (int k = 0; k <= dsNationalite.Tables[0].Rows.Count - 1; k++)
{
unForm.cbNat.Items.Add(dsNationalite.Tables[0].Rows[k][1].ToString());
}
//Les Postes d'identification
DataSet dsPosteId = new DataSet();
dsPosteId = Utils_Load_Parametrage.Load_Parametre(4);
for (int l = 0; l <= dsPosteId.Tables[0].Rows.Count - 1; l++)
{
unForm.cbPI.Items.Add(dsPosteId.Tables[0].Rows[l][0].ToString());
}
}
}
public static void DisplayLibellePI (string paramPI)
// ReSharper restore InconsistentNaming
{
DataRow drPiParam = null;
drPiParam = Find_PI(paramPI);
unForm.Label_PI.Text = drPiParam[1].ToString(); "ici j ai deja une erreur"
}
}
4- l appel de la fonction dans le formulaire F_main
private void F_Main_Load(object sender, EventArgs e)
{
Utils_Proc_Func.Call_Parametres();
}
"comme je l ai dis des le debut toutes les fonctions s executre tres bien, sauf que au finish, mon formulaire n est pas mis a jour. je ne sais comment remedier a ce probleme qui me bloque depuis 03 jours
Merci
J espere avoir cette fois tres bien decris mon souci.
marclas
A voir également:
Impossible d acceder aux controle de mon fomulaire
Tupad
Messages postés239Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention27 août 20125 26 avril 2012 à 08:40
J'ai plusieurs remarques avec ton code,
- évite les switchs pour récupérer des valeurs spécifiques, l'abstraction et l'héritage sont là pour ça.
- Ta méthode Create_Dossier n'insérera jamais rien, il manque l'affectation des paramètres dans ta requête. (à prévoir quand tu la passes à ta méthode ACTION...?)
- Pourquoi autant de classes statiques? Des instances te permettraient de ne pas devoir te soucier reseter les variables.
- Pourquoi vouloir récupérer tes valeurs dans des dataset? pas moyen de faire plus léger? Par exemple retourner une liste de string à partir d'une requête sql de type select?
Pour ton problème, à moins que F_Main soit un singleton, tu travailles sur une nouvelle instance de ta form chaque fois que tu passes dans ta fonction de chargement. Vérifie si la form réellement affiché a un hashcode (par la méthode getHashCode()) égale à celle que tu instancies dans ton chargement. Si elles sont différentes, vois pour passer ta form à la méthode de chargement.
marclas
Messages postés54Date d'inscriptiondimanche 9 septembre 2007StatutMembreDernière intervention22 août 2012 26 avril 2012 à 11:02
bonjour Tupad,
Merci pour tes explications
effectivement mon formulaire F_Main, n est pas un signleton. comment faire pour le convertir en singleton? est ce possible? j ai beau lire la documentation a ce sujet c est hyper flou pour moi.
il y a bien difference des hashcode.
pour passer mon formulaire en parametre ce serait cool mais la aussi j ai pas trouvé comment procéder.
Tupad
Messages postés239Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention27 août 20125 26 avril 2012 à 11:15
Pour faire simple, passe simplement en paramètre ta form
public static class Utils_Proc_Func
{
public static void Call_Parametres(F_Main form)
{
// ca n'est plus vraiment nécessaire mais c'est pour l'exemple
using (F_Main unForm = form)
{
}
}}