Controls séparés...Dur Dur [Résolu]

Signaler
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008
-
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008
-
Bonjour tout l'monde
j'ai un p'tit souci avec mes controls...voilà comment se présente mon appli:
j'ai une classe principale, normale, un fichier ressources et une autre classe qui s'occupe de la connexion vers les bases de données...le problème que j'ai, c'est que quand je veux faire un catch sur une exception de connexion (donc le traitement est effectué dans la classe secondaire...) j'aimerais sauvegarder un historique dans une listBox de l'aute coté (c'est à dire dans la form principale donc...)

j'ai vu sur le forum qu'on pouvait les mettre en public ou internal...ca marche pas...(dans la 2eme classe):
Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'MonControl'
et sinon j'ai essayé public static et voilà l'erreur (dans la 1ere classe):
Le membre static 'MonControl' est inaccessible avec une référence d'instance ; qualifiez-le avec un nom de type

si quelqu'un pouvait m'aider à trouver comment faire...
"Un seul Être vous manque, et tout est dépeuplé..."

14 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Exemple de base:

Tu as ta classe MaFormPrincipale et ta seconde classe MaClass

Imaginons ta seconde class ainsi



public class MaClasse

[

private MaFormPrincipal formPrincipal;

...

//Le constructeur :

MaClasse(MaFormPrincipale mfp)

{

this.formPrincipale = mfp;

}

// ...

}



Ensuite ton code cité plus haut deviendrais :

mfp.Lst_Hist_Connex.Items.Add(...);



Dans ta classe principale, tu as juste a instancier ta seconde classe ainsi:

MaClasse mc = new MaClasse(this);



J'espere que j'ai été assez clair, n'hésite pas a poser des questions si besoin il y a.


Mx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
bah tu rajoutes TaFormPrincipale dans ton constructeur...

donc

public
ConnexOra(
string DBname, MaFormPrincipale mpf)

{

//..

}






Mx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
C'est un peu pas tres tres clair, en fait.

Je suis sur que tu dois pas etre tres loin de resoudre l'erreur, mais y'a des choses incompréhensibles


Genre, je te cite:

" ai vu sur le forum qu'on pouvait les mettre en public ou internal..."




Tu parles de quoi, en disant "les" ?

Donne nous des pitits bouts de code, ca pourrait etre plus simple



Mx
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008

/// <summary>



/// Composants graphiques du Formulaire



/// </summary>



public System.Windows.Forms.GroupBox GrpBox_DescrBD;



public System.Windows.Forms.Label Lbl_Descr_BD;



public System.Windows.Forms.ListBox Lst_Hist_Connex;



public System.Windows.Forms.Panel Panel_Desc_BDD;



public System.Windows.Forms.Panel Panel_List_Hist;

... ... ... ... ... ... ... ...

voilà les 'les' dont je parle lol c'était les controls en fait...par défaut ils sont en private t'es d'accord, mais si je les mets en public j'ai une erreur et si je les passe en static j'ai quand même une erreur...en fait voici une partie du catche de l'exception dans mon autre classe:

...
// blablabla
...


else
if (MsgErr.Equals(DialogResult.Cancel))


{



// sauvegarde de l'erreur dans l'historique


Solution1.namespace.Lst_Hist_Connex.Items.Add(


DateTime.Now.Hour+"H"+


DateTime.Now.Minute+"min"+


DateTime.Now.Second+"sec "+


resMng.GetString("Lst_Hist_Connex_ErrCon")+


Solution1.classe.ComboBox_ListeBDD.SelectedItem);


Solution1.classe.Lst_Hist_Connex.Items.Add("");




reessayer =
false;



// à ce niveau, on sort de la procédure car la connexion n'est pas effectuée et



// on ne demande plus de réessayer de se connecter

sachant que dans le if précédent, je mets reessayer s'il clque sur RETRY et là c s'il fait ANNULER auquel cas j'aimerais sauvegarder dans la listeBox qu'est dans l'autre fichier Form1.cs qui contient la classe Classe

j'espere que c'est un peu plus clair... si il te faut encore plus de détail je te copie-colle exactement les erreurs qu'ils me sort avec ce qu'ils me souligne dans l'environnement pour dire que c'est faut :)

merci en tous cas
"Un seul Être vous manque, et tout est dépeuplé..."
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Solution1.namespace.Lst_Hist_Connex

Ouhlala, tu peux pas acceder a ta forme ainsi.

Il faut que tu passes a ton autre classe, la reference de ta form, pour pouvoir y acceder ensuite !

Par le biais du constructeur par exemple.



Mx
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008

ahh bah voilà pourquoi...et comment on fait ce chose que tu dis qui semble vachement bien? :D:D
lol merci...:$

"Un seul Être vous manque, et tout est dépeuplé..."
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008

bah euh...j'ai fait ce que t'as dit, le problème c'est que dans le new MaClasse(this) bah moi le constructeur il prend une string en parametre...donc this il me dit que c réservé...:s
(question: ds la seconde classe j'ai un namespace..dois-je l'enlever ou non...? )

"Un seul Être vous manque, et tout est dépeuplé..."
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Tu peux tres bien mettre plusieurs parametres dans ton constructeur tu sais.



Sinon, pour ta question, le mieux serais de mettre le meme namespace que celui de ta forme principale

Mx
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008

euh nan...j'comprends pas là...ma 2eme classe, le seul constructeur qu'elle ait c'est celui-ci:


/// <summary>



/// Constructeur de la classe



/// </summary>



public ConnexOra(
string DBname)


{



// le nom de la base à laquelle se connecter est passé en paramètre



this.nomBDD = DBname;





// on switch sur le nom de la base pour obtenir les informations de



// connexion appropriées depuis le fichier de ressources


resMng =
new ResourceManager("namespace.resource",Assembly.GetExecutingAssembly());



switch (nomBDD)


{



case ("BDD1"):
this.user = resMng.GetString("BDD1_User");



this.password = resMng.GetString("BDD1_Passwd");



break;



case ("BDD2") :
this.user = resMng.GetString("BDD2_User");



this.password = resMng.GetString("BDD2_Passwd");



break;


}



this.nbLignes = 0;



this.nbColonnes = 0;



this.oraCnx =
new OracleConnection();



this.oraCmd =
new OracleCommand();



this.oraDtaReader =
null;


}

et là je vois pa comment "déclarer" ma 2eme classe dans la premiere avec ce 'this'...le constructeur ne construit qu'une connexion, donc je vois pas :s désolé...est-ce que tu pourrais m'expliquer d'une autre façon s'il te plait? :s (j'sais chui un boulet lol)

"Un seul Être vous manque, et tout est dépeuplé..."
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008

c'est bon ca marcheeeee! lol j'suis débile...j'avais mal lu ce que tu m'avais écris: forcément j'voais pas ce que tu voulais dire...j'regardais le constructeur de la principale au lieu de la secondaire...pfff desfois j'me jetterais contre un mur...merci ça marche nickel...lol quel abruti lol
juste..Est-ce que j'dois laisser les controls en public ou j'peux les mettre en internal ? (c juste pour savoir, moi ils me genent pas en public :) )
merci encore grand gourou

"Un seul Être vous manque, et tout est dépeuplé..."
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Peu importe...

Laisse les en public, c'est pas reellement génant dans ton cas.

Mx
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008

oki ben merci encore à toi pour ton aide hein lol j'crois qu'on d'vrait faire un forum spécial MorpionMx tu sais...genre un truc http://www.morpionmxCS.com lol

"Un seul Être vous manque, et tout est dépeuplé..."
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Y'a bien d'autres personnes qui sont présentes pour aider tu sais ;)

En tout cas, y'a pas de prob. Moi aussi j'etais bien content quand
j'avais des soucis et qu'on me repondais (et ca arrive encore souvent).


Mx
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008

ui ui je sais que t'as pas l'EXCLU mais dans toutes les réponses que j'ai eues, la grande majorité c'était toi, et même quand j'fouine sur le forum t'es souvent là :)
bon bah je te remercie en tous cas...j'te dis à bientot hein lol

"Un seul Être vous manque, et tout est dépeuplé..."