Modifier le background d'une form depuis un classe

Fermé
xxxinconitoxxx Messages postés 150 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 15 novembre 2015 - 8 nov. 2015 à 16:08
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 - 8 nov. 2015 à 16:57
Bonjour,

J'essaye de modifier l'image d'arrière plan d'une form (Form1) depuis une autre classe, enfaite depuis la classe "Config" j'utilise ce code pour changer l'image, mais ça me marche pas :

Form1 frm1 = new Form1();
frm1.BackgroundImage = Image.FromFile(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\testDir\\background.png");


Je tient à préciser que l'image existe bien dans le dossier et que si j'execute ce code depuis form1 load en remplaçant "frm1" par "this" ça marche.
A voir également:

2 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
8 nov. 2015 à 16:15
Il faut que tu utilises l'instance déjà créée, car ton New créé une nouvelle instance de Form1, donc ça ne modifie pas celle déjà présente.
0
xxxinconitoxxx Messages postés 150 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 15 novembre 2015 164
8 nov. 2015 à 16:17
Merci, c'est ce que je pensez mais j'ai aucune idée de comment faire car lorsque j'enlève le <code>= new Form1();</code sa me renvois une erreur ...

--
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
8 nov. 2015 à 16:20
Mémorise en public static l'instance chargée de Form1 (genre dans l'event Load de Form1) et ensuite tu fais : Form1.MonInstance à la place de New Form1()
0
xxxinconitoxxx Messages postés 150 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 15 novembre 2015 164 > NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024
8 nov. 2015 à 16:23
J'ai pas tout compris là, il faut que je remplace "private void" par "public static void" dans "Form1_Load" ?
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
8 nov. 2015 à 16:25
Non, tu déclares une variable en public static pour mettre l'instance courante de ta form.
0
xxxinconitoxxx Messages postés 150 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 15 novembre 2015 164 > NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024
Modifié par xxxinconitoxxx le 8/11/2015 à 16:44
Je pense avoir compris,
J'ai ajouter ce code dans la form1 :
public static Form1 frm1;


mais quand j'utilise
Form1.frm1.BackgroundImage = IMAGE ICI

sa me renvois une erreur :
La référence d'objet n'est pas définie à une instance d'un objet.
0
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 931
Modifié par Whismeril le 8/11/2015 à 16:58
Bonjour,

j'ai écrit un article sur différente manière de passer des informations d'une classe à l'autre.
https://codes-sources.commentcamarche.net/faq/11107-interactions-entre-form-en-net-c-et-vb-net

Je n'y ai pas traité les variables globales (static) car "on" dit que c'est la solution de dernier recours, donc tu y trouveras d'autres solutions que celle proposée par NHenry.

Pour declarer Form1 static, c'est :
        public static Form1()
        {

tout au début

Modérer m'amène à intervenir dans de nombreux posts, mais les seuls langages que je connaisses sont le C# et un peu de VB. Pour vos codes pensez à la coloration.
Réponse trouvée ->Question Résolue
0