Auf alle Assembly-Ressourcen zugreifen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Humax.

    Auf alle Assembly-Ressourcen zugreifen

    Beiträge ausgelagert von Resources per Schleife durchlaufen
    -Artentus


    Ich hänge mich mal hier an in der Hoffnung, dass jemand einen Lösungsvorschlag hat.
    Ich würde gerne per Schleife auf alle meine in das Programm eingebetteten Dateien zugreifen, bekomme es aber nicht hin. Hatte unter anderem mal so probiert.

    VB.NET-Quellcode

    1. For Each resourceName As String In executingAssembly.FullName

    oder

    VB.NET-Quellcode

    1. For Each Ico In My.Resources.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, True, True)

    Hintergrund ist der, dass ich das zwar auch ""manuell" machen kann, da es aber viele Bilder / Symbole sind, wäre der Aufwand per schleife sehr viel geringer.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Artentus“ ()

    @Humax Probier mal dies, die anderen Datentypen musst Du noch implementieren:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Resources
    2. Imports System.Reflection
    3. Public Class Form1
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. Dim resManager As ResourceManager = My.Resources.ResourceManager
    6. Using resReader As New ResourceReader(Assembly.GetExecutingAssembly.GetManifestResourceStream(resManager.BaseName & ".resources"))
    7. Dim id As IDictionaryEnumerator = resReader.GetEnumerator
    8. While id.MoveNext
    9. If (TypeOf id.Value Is Bitmap) Then
    10. Dim bmp As Bitmap = DirectCast(id.Value, Bitmap)
    11. PictureBox1.Image = bmp
    12. MessageBox.Show(id.Key.ToString)
    13. End If
    14. End While
    15. resReader.Close()
    16. End Using
    17. End Sub
    18. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    Danke funtzt prima!
    Bei mir sieht das jetzt so aus:

    VB.NET-Quellcode

    1. ​Dim resManager As System.Resources.ResourceManager = My.Resources.ResourceManager
    2. Using resReader As New System.Resources.ResourceReader(System.Reflection.Assembly.GetExecutingAssembly.GetManifestResourceStream(resManager.BaseName & ".resources"))
    3. Dim id As IDictionaryEnumerator = resReader.GetEnumerator
    4. While id.MoveNext
    5. If id.Value.ToString = "(Symbol)" Then
    6. ComboBox_Icon.Items.Add(id.Key.ToString)
    7. End If
    8. End While
    9. resReader.Close()
    10. End Using

    Ich fülle also eine Combobox mit den vorhandenen Icons und wenn ich eines auswähle setze ich das so um:

    VB.NET-Quellcode

    1. Dim resManager As System.Resources.ResourceManager = My.Resources.ResourceManager
    2. Using resReader As New System.Resources.ResourceReader(System.Reflection.Assembly.GetExecutingAssembly.GetManifestResourceStream(resManager.BaseName & ".resources"))
    3. Dim id As IDictionaryEnumerator = resReader.GetEnumerator
    4. While id.MoveNext
    5. If id.Key.ToString = combobox1.selecteditem.tostring Then
    6. Me.Icon = DirectCast(id.Value, Icon)
    7. Exit While
    8. End If
    9. End While
    10. resReader.Close()
    11. End Using