Problème avec My.resources

Résolu
tininou Messages postés 3 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 10 février 2009 - 7 févr. 2008 à 13:55
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 8 févr. 2008 à 08:57
Bonjour,
je rencontre une difficultés avec la fonction suivante :

MyImage = New Bitmap(My.Resources._0)
pb_heure.ClientSize = New Size(151, 86)
pb_heure.Image = CType(MyImage, Image)

_0 correspond à un fichier 0.png. ajouté comme ressources au projet
Ce code est appelé suite à l'appui sur un bouton et m'affiche correctement l'image 0.png

Par contre je souhaiterai qu'a chaque appui sur le bouton l'image change en 1.png puis 2.png.

j'ai essayé quelquechose comme :
fichier = ("My.Resources._" & i)
        If i < 9 Then
            MyImage = New Bitmap(fichier)
            pb_heure.ClientSize = New Size(151, 86)
            pb_heure.Image = CType(MyImage, Image)
            i = i + 1
end if

mais cela ne marche pas : Could not find file '\My.Resources._0'.

Juste une précision le projet est de type Smart Device (pour Pockt PC) mais je crois que dans mon cas cela ne change pas grand chose.

Merci pour votre aide

7 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
7 févr. 2008 à 20:35
Essaye peut-etre alors directement comme ceci :

MyImage = My.Resources.ResourceManager.GetObject(i.ToString)

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 févr. 2008 à 14:08
Bonjour

J'avais eu la même problèmatique, et cla solution que j'avais trouvée (sans trop me casser la tête) :

Dans un module :
Public GetBitmap(byval pId as integer)
    select case pId
       Case 0
            Return M.Resources._0
        Case 1
            Return M.Resources._1

       Case 2
...
..
        Case Else
          Return Nothing
    End select
    return Nothing
end function

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 févr. 2008 à 14:09
Bonjour

Correction :
à la place de
M.Resources
il faut bien évidemment lire :
My.Resources

Ensuite tu vois comment il faut l'appeler.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
7 févr. 2008 à 15:08
Sinon tu as la possibilité de faire :

MyImage = New Bitmap(My.Resources.ResourceManager.GetObject(i.ToString))

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0

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

Posez votre question
tininou Messages postés 3 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 10 février 2009
7 févr. 2008 à 17:16
Merci pour vos réponses.

en utilisant la méthode de Casy j'ai  le même message :

"Error    1    Overload resolution failed because no accessible 'New' can be called without a narrowing conversion:
    'Public Sub New(filename As String)': Argument matching parameter 'filename' narrows from 'Object' to 'String'.
    'Public Sub New(stream As System.IO.Stream)': Argument matching parameter 'stream' narrows from 'Object' to 'System.IO.Stream'.
    'Public Sub New(image As System.Drawing.Image)': Argument matching parameter 'image' narrows from 'Object' to 'System.Drawing.Image'. 

en modifiant  MyImage = New Bitmap(My.Resources.ResourceManager.GetObject(i.ToString))
par : MyImage = New Bitmap(My.Resources.ResourceManager.GetObject(i).ToString)
plus de message mais lors du test du programme : NullReferenceException

Je suis un peu perdu.

Concernant la méthode proposé par Nhenry je l'ai utilisé de cette manière (euh excusez moi d'avance si c'est pas comme cela qu'il fallait faire car  je débute)

MsgBox(GetBitmap(i)) =>  de cette manière j'obtiens le même message overload résolution failed

au feeling j'ai rajouté :

MsgBox(GetBitmap(i).tostring) et là la fonction me renvoi "system.drawing.bitmap" au lieu de My.resources._0

Merci encore pour votre aide
0
tininou Messages postés 3 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 10 février 2009
7 févr. 2008 à 22:05
Merci .
ca marche impec. !!

Meri à vous pour votre aide rapide et efficace
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 févr. 2008 à 08:57
Bonjour

Si
MsgBox(GetBitmap(i).tostring)
Te retourne le type Bitmap, c'est normal, car GetBitmap te retourne une image (Bitmap) et non une String...

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Rejoignez-nous