Obtention d'une ressource par son nom de catalogue

Contenu du snippet

    'Example d'utilisation
    Private Sub Form2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        ' Récupération de l'image de fond du formulaire 'Form1'
        ' comme image de fond du formulaire 'Form2'
        Me.BackgroundImage = Get_Resource_ByName("form1.$this.BackgroundImage")
    End Sub
    ''' <summary>Obtention d'une ressource en utilisant son nom</summary>
    ''' <param name="pName">Nom de la ressource précédé de l'object qui la contient suivit d'un point .</param>
    ''' <remarks>Pour d'autres type de ressources, il faudra modifier en conséquence.</remarks>
    Public Function Get_Resource_ByName(ByVal pName As String) As Image
        'Valeur qui sera retournée
        Dim lReturnValue As Image = Nothing
        'Dossier qui contient la ressource recherchée.
        Dim lRessourcesFolder As String
        Dim lvi1 As Integer = InStr(pName, ".")
        If lvi1 = 0 Then
            'Si absent le dossier standard de ressources de l'Assembly est utilisé.
            lRessourcesFolder = "resources"
        Else
            'Sinon on utilise le paramètre fourni
            lRessourcesFolder = Mid(pName, 1, lvi1 - 1)
            pName = Mid(pName, lvi1 + 1)
        End If
        'On obtient l'Assembly appelante qui contient le dossier de la ressource recherchée.
        Dim lAssembly As System.Reflection.Assembly = System.Reflection.Assembly.GetEntryAssembly 
        'Rechercher du dossier
        For Each resourceName In lAssembly.GetManifestResourceNames
            If resourceName.ToLower().EndsWith("." & lRessourcesFolder & ".resources") Then
                'Le dossier a été trouvé
                Dim lStream As System.IO.Stream = lAssembly.GetManifestResourceStream(resourceName)
                Dim reader As ResourceReader = New ResourceReader(lStream)
                Dim entry As DictionaryEntry
                'Recherche de la ressource
                For Each entry In reader
                    If entry.Key.ToLower() = pName.ToLower() Then
                        'La ressource a été trouvée.
                        lReturnValue = CType(entry.Value, Bitmap)
                        'Fin de la recherche de la ressouce.
                        Exit For
                    End If
                Next
                reader.Close()
                lStream.Close()
                'Fin de la recherche dans le dossier.
                Exit For
            End If
        Next
        Return lReturnValue
    End Function


Compatibilité : VB 2008

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.