Question

J'ai un formulaire en C# qui comporte un bouton sur lequel, lorsque je clique dessus, je souhaite que l'image d'arrière-plan parcoure un ensemble d'images (que j'ai comme ressources pour le projet).Les images sont nommées '_1', '_2', etc.et chaque fois que je clique sur le bouton, je veux que son image d'arrière-plan passe à la suivante et revienne à "_1" lorsqu'elle atteint le niveau le plus élevé.Y a-t-il un moyen de faire cela?

J'ai essayé d'obtenir button1.BackgroundImage.ToString() mais ça donne System.Drawing.Bitmap au lieu de Resources._1 comme je le pensais (auquel cas je pourrais simplement obtenir le dernier caractère et l'activer pour changer l'arrière-plan en la nouvelle image appropriée).

Merci pour votre aide.

Était-ce utile?

La solution

Pourquoi ne mettez-vous pas simplement les images dans un tableau ?

Autres conseils

Vous pouvez sous-classer Button et remplacer la propriété BackgroundImage afin de mieux suivre la ressource actuelle qui représente l'image.Vous pouvez également remplacer la méthode onclick pour gérer en interne le passage à l'image suivante, bien que cela puisse être un peu étrange si les ressources sont gérées en dehors de votre classe de bouton dérivée.

class YourClass
{
    private IEnumerator<Image> enumerator;

    YourClass(IEnumerable<Image> images)
    {
        enumerator = (from i in Enumerable.Range(0, int.Max)
                      from image in images
                      select image).GetEnumerator();
        enumerator.MoveNext();
    }

    public Image CurrentImage { get { return enumerator.Current; } }

    public void OnButtonClick() { enumerator.MoveNext(); }
}

Vous pouvez utiliser ce code comme classe de support pour votre contrôle en supposant que l'utilisateur ne cliquera pas sur le bouton plus de deux milliards de fois.

Notez simplement qu'une fois cette classe créée, vous ne pouvez pas modifier la liste d'images donnée à l'extérieur.Si vous souhaitez faire de telles choses, vous devez implémenter un modèle jetable et disposer de l'enquêteur en conséquence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top