2010-07-20 6 views
1

Dans mon Form1 je suis en train de changer autour de 50 images de bouton comme suit:revenir propriétés par défaut du bouton C# - Windows Forms

   button1.Image = new Bitmap("C:\\x.jpg"); 
       button2.Image = new Bitmap("C:\\y.jpg"); 
       button3.Image = new Bitmap("C:\\z.jpg"); 
       ..... 

etc ....

sur un autre événement que je veux tous les 50 boutons pour avoir leurs images par défaut que je définis en utilisant la fenêtre des propriétés du concepteur. Est-ce possible ou devrais-je simplement déclarer à nouveau les images?

ce que j'ai essayé et n'a pas marché:

avons essayé les deux:

Properties.Settings.Default.Reset(); 
Properties.Settings.Default.Reload(); 

Répondre

1

Vous devrez définir manuellement à nouveau l'image:

foreach (Button b in buttons) 
    b.Image = _defaultImage; 

Cependant, vous pouvez faire une petite méthode qui fait cela et passe dans un tableau de vos boutons. Je voudrais faire un tableau de forme locale de tous les boutons pour un accès facile.

+0

Merci, qui permet un gain beaucoup de recherches! –

+1

Il serait cool que le formulaire conserve son état initial, mais malheureusement, le concepteur n'est rien d'autre qu'un générateur de code - une fois le code exécuté, c'est tout. Vous ne pouvez pas appeler à nouveau ce code ('InitializeComponents') soit parce qu'il crée des objets etc (eh bien vous pourriez mais cela effacera votre formulaire entier, au lieu de simplement les boutons). –

+0

alors pourquoi les méthodes Reset et Reload n'ont-elles pas fonctionné? – serhio

2

Si vous ne met pas en cache des propriétés d'origine, alors vous devez les recharger des ressources:

var resources = 
    new System.ComponentModel.ComponentResourceManager(typeof(Form1)); 
button1.Image = (Image)resources.GetObject("button1.Image"); 
button2.Image = (Image)resources.GetObject(button2.Name + ".Image"); 
... 

Ou, si vous voulez recharger toutes les propriétés des composants:

var resources = 
    new System.ComponentModel.ComponentResourceManager(typeof(Form1)); 
resources.ApplyResources(button1, "button1"); 
resources.ApplyResources(button2, button2.Name); 
... 
+0

+1 cool, jamais vu comme ça avant. Je m'en souviendrai :) –

Questions connexes