Debutant rencontre prb en C#

theclear Messages postés 12 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 24 juillet 2007 - 4 oct. 2004 à 16:36
theclear Messages postés 12 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 24 juillet 2007 - 5 oct. 2004 à 11:06
J'ai modifié un programme qu'un collegue avait créé et je ne comprend pas pourquoi j'ai des erreurs:

Voila un apercu qui doit pouvoir vous permettre de me mettre sur la voie:

Code:
namespace expes
{
public class Form1 : System.Windows.Forms.Form
{

private int max_signs;
public Form1()[...]
.......
static void Main()
{

Application.Run(new Form1());

max_signs = 50;

....
}

Sur max_signs "celui de l'affectation" ( = 50) il me met l'erreur :Citation:
"Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'expes.Form1.wb'"

Si ca vient d'ailleurs demandez moi d'envoyer une autre partie mais le prog est assez long je vx pas tout envoyer non plus.

Merci a bientot

7 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
4 oct. 2004 à 17:31
Quand tu déclares max_signs, il faut que tu le déclares en static

 private static int max_signs; 


Mx
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
4 oct. 2004 à 18:14
Ce qu'a dit MorpionMx est tout à fait juste, ça vient du fait que tu ne peut pas utiliser des variables de class dans un context static comme le main!
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
4 oct. 2004 à 19:42
je viens de VB.net et le static je connais pas, vu que c'est un peu le thème du problème, qqn pourrait m'expliquer ce que veut dire en détails le mot clé static, et m'expliquer en détails le pourquoi du comment on doit declarer la variable en static ?

merci

Cyril
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
5 oct. 2004 à 07:50
Hello,
static est un concept objet. Lorsque tu fait
Application.Run(new Form1()); 
tu crée un nouvel objet de type Form1.
Si tu veux modifier un membre de la classe Form1, tu as plusieurs possibilités :
- Le déclarer private comme dans ton code et le modifier depuis le constructeur, une méthode ou un accesseur public de Form1.
- Le déclarer public et le modifier depuis l'extérieur.
-Le déclarer static, mais là, attention!! Les membres statiques sont partagés entre toutes les instances d'une classe. En fait, il n'y a même pas besoin de faire un new pour en modifier la valeur. Ca ne change peut-être pas grand chose pour un Form, mais en règle générale, il faut faire attention.

Voici une solution qui doit fonctionner :
namespace expes 
{ 
public class Form1 : System.Windows.Forms.Form 
{ 

private int max_signs; 
public int MaxSigns{
 get{
  return max_signs;
 }
 set{
  max_signs = value;
 }
}
public Form1()[...] 
....... 
static void Main() 
{ 
Form1 f1 = new Form1();
f1.MaxSigns = 50;
Application.Run(f1); 

.... 
} 


Amicalement, SharpMao
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
5 oct. 2004 à 10:21
donc si j'ai bien compris, qd on met qqchose en static on a ensuite pas besoin de l'initialiser?
c'est pareil que pour les string ? qd on fait

string name;
static void Main()
{
name = @"Cyril";
}

Je n'ai pas instancié ma string est pourtant ca marche

et si je fais

public class Personne
{
public string name;
static Personne()
{}
}

static Personne oP;
static void Main(){
oP.name = "Cyril";
}

d'apres ton explication ce code devrait marcher ? pourtant j'ai pas instancié mon objet personne

mais si je fais

public class Personne
{
public string name;
static Personne(string Name)
{
this.name = Name;
}
}

static Personne oP;
static void Main(){
Console.WriteLine(oP.name);
}

Ce code ne devrait pas marcher je pense.

j'ai toujours pas compris l'utilisation de static qqn pour m'eclairer ? et je me demande si ca a un rapport avec le fait que qd on utilise un string ou tout les types de bases on est pas objet de les instancier

Merci de m'eclairer

Cyril

PS : tout les codes que j'ai ecrit ci dessus j'ai pas pu les tester j'ai pas de compilateur ou je suis :(
0
theclear Messages postés 12 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 24 juillet 2007
5 oct. 2004 à 11:06
Oki j'ai juste fait:

Form1 f1 = new Form1();
f1.MaxSigns = 50;
Application.Run(f1);

Ca marche come sur des rouletes j'av eu l'astuce d'un autre forum en fait merci a tous a bientot
0
theclear Messages postés 12 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 24 juillet 2007
5 oct. 2004 à 11:06
Oki j'ai juste fait:

Form1 f1 = new Form1();
f1.MaxSigns = 50;
Application.Run(f1);

Ca marche come sur des rouletes j'av eu l'astuce d'un autre forum en fait merci a tous a bientot
0
Rejoignez-nous