Modifier le background d'une form depuis un classe

xxxinconitoxxx Messages postés 151 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
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.

2 réponses

NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
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 151 Date d'inscription   Statut Membre Dernière intervention   166
 
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 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
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 151 Date d'inscription   Statut Membre Dernière intervention   166 > NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention  
 
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 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Non, tu déclares une variable en public static pour mettre l'instance courante de ta form.
0
xxxinconitoxxx Messages postés 151 Date d'inscription   Statut Membre Dernière intervention   166 > NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention  
 
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
Utilisateur anonyme
 
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