Problème avec LocationChanged

Signaler
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006
-
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006
-
Bonjour, je suis débutant en c# et j'ai un gros gros problème. je m'explique :
je travaille en événementiel, j'ai crée une form2 et en faite dans cette forme je souhaite déplacer la picturebox3 selon la valeur d'une variable. j'ai donc réussi en faisant ainsi :

- j'ai déclaré comme cela ma picturebox:
static public System.Windows.Forms.PictureBox pictureBox3;

- et puis pour déplacer la picturebox3, j'ai utiliser un selon et le locationChanged comme ceci :

switch(var.form2.case1)
{
case 1 :{Form2.pictureBox3.Location = new Point(80,560);}...

le problème est que lorsque je souhaite modifier ma form2, le mot static dans la déclaration s'en va à chaque fois et je dois modifier pleins d'autres choses (enlever le mot clé this ...)
je ne sais pas comment procéder pour remédier à ce problème..

Merci d'avance
Kbitnik

6 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
le static ne sert à rien... le PictureBox appartient à l'instance du formulaire qui le contient...

Sébastien FERRAND
[MVP C#]
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006

et comment je peux faire alors pour déplacer ma picturebox3, parce que sans le static ça ne fonctionne pas...
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
hum... je viens de comprendre ton problème...
apparement tu viens de vb6...

en .net (vb et c#), il est nécessaire de créer une instance de ta classe avant d'en manipuler les membres.

donc ca donne :

Form2 f = new Form2();
f.pictureBox3.Location = new Point(80,560);

Je te conseille la lecture d'un livre sur la programmation orientée objet, ou bien un livre sur C#.

Sébastien FERRAND
[MVP C#]
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006

j'ai déja essayé cela mais ça ne marche pas et je ne m'y connait absolument pas en programmation objet. dans ce projet je dois utiliser le moins possible la programmation objet. donc je ne trouve pa de solution à part mettre static public ....picturebox3 dans les déclarations et enlever un certains nombre de this mais cela ne me convient pas du tout car je ne peux en aucun cas modifier ma form.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
lol...

tu dois utiliser le moins possible de POO...
tu veux un conseil... change de langage... C# est un langage Orienté Objet... c'est à dire qu'il a été conçu pour faire de la POO...

Sébastien FERRAND
[MVP C#]
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006

ah bon, c pa grave, jvais quand même essayer en c#. c'est un projet que je dois présenter à un jury, en c# évènementielle mais comme tu dis il y a forcément de la POO. mais en faite j'ai essayé un truc qui ne marche pas non plus, je m'explique :
j'ai crée une classe var (la voisi) :
public class var
{public static void Main()
{
Application.Run(form1);
}
static public Form1 form1 = new Form1();
static public Form2 form2 = new Form2();
}

et dans les déclaration dans les form 1 et 2, je n'ai aucun static juste quelque public. ça marche pour certaines valeurs de variables mais il y a juste un problème c'est pour changer de place ma pictureBox (le locationChanged).