Comment incorporer en pictureBox une ressource issu de la liste des ressources ?

Résolu
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 - 23 déc. 2011 à 12:15
 Utilisateur anonyme - 23 déc. 2011 à 21:37
Bonjour,

Je voudrais incorposer une ressource dans une picturebox, ressource issue de la liste des ressources, mais je n'y arrive pas, ça ne marche pas, voici mon code :


' ressources img1 + img2 (bmp)

Dim r As System.Resources.ResourceSet = My.Resources.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.InvariantCulture, True, False)
  Dim dicos As IDictionaryEnumerator = r.GetEnumerator()

    While dicos.MoveNext
      If Mid(dicos.Key.ToString(), 1, 3) = "img2" Then
        PictureBox1.Image = My.Resources.dicos.Key.tostring ' REFUS
        PictureBox1.Image My.Resources dicos.Key.ToString ' REFUS
        PictureBox1.Image = My.Resources Is dicos.Key.ToString ' REFUS
        Exit While
      End If
    End While


Merci de bien vouloir m'indiquer la bonne syntaxe pour ce que je veux faire ?

Cordialement, Joe.

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 déc. 2011 à 15:13
ou en court, hein ^^

PictureBox1.Image = My.Resources.ResourceManager.GetObject(ListBox1.Text)


Je relis mon premier post...

je ne voit pas tant de 'ce qu'il ne faut pas faire'

un rappel de base, virer Microsoft.VisualBasic

et des explications sur 'pourquoi ca ne fonctionne pas'

enfin, des questions pour tenter de mieux comprendre ton projet...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 déc. 2011 à 14:44
My.Resources = dicos.Key.ToString
et
My.Resources Is dicos.Key.ToString

renvoient tous deux un Boolean
normal que ton affectation plante

My.Resources.dicos.Key.tostring

renvoie une chaine de caractères
pas une image, encore une fois

soit tu stockes en ressource une image, auquel cas il te suffit de la charger

soit tu stockes une image et a voir selon le format a en avoir un Stream, par exemple.

enfin, je dirai que ta boucle est étrange...

Mid est du VB6 !!!!!

pense a supprimer la reference Microsoft.VisualBasic de ton projet

tu parcoures chaque item de ta collection, comparant toi même la clé...

souhaites tu reelement ne tester que les trois premiers caractères de chaque clé ?
ou cherches tu l'element dont la clé est img2 ??


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
23 déc. 2011 à 14:59
Bonjour,

Tu m'expliques beaucoup ce que je ne dois pas faire, mais peu ce que je dois faire

J'ai désormais le bon code :

    While dicos.MoveNext
      If dicos.Key.ToString() = ListBox1.Items(ListBox1.SelectedIndex) Then
        Dim obj As Object = r.GetObject(dicos.Key)
        PictureBox1.Image = obj
        Exit While
      End If
    End While


C'est donc résolu (PAR MOI)

Cordialement, Joe.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 déc. 2011 à 15:10
faire ou ne pas faire...

j'ai posé des questions pour tenter de te répondre plus finement.
on voit donc que tu stockes une image.

pourquoi alors cette boucle While ?

pourquoi ne pas faire :

        With My.Resources.ResourceManager()
            PictureBox1.Image = .GetObject(ListBox1.Text)
        End With


un code qui fonctionne c'est bien, quand on le comprend, on y gagne, non ?


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
23 déc. 2011 à 21:37
Bonsoir,

Si Option Strict est sur On, tu dois alors 'caster' l'objet renvoyé par GetObject en type Image. Pour cela, utilise DirectCast, CType ou TryCast.

Bonne nuit.
0
Rejoignez-nous