none
Afficher une ressource dans l'ordre des noms de fichier RRS feed

  • Question

  • Bonjour à tous.

    J'ai des images de cartes à jouer ajouter dans l'ordre  de leur nom de fichier dans les ressources.

    Cartes00, Cartes01, Cartes02, .........Cartes49, Cartes50, Cartes51, Cartes52.

    Pour les extraire, j'utilise :

    Dim i as integer 

    Dim rs As ResourceSet = My.Resources.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, True, True)
     Dim dicos as DictionaryEntry

     Private Sub BT_Plus_Click(sender As Object, e As EventArgs) Handles BT_Plus.Click
            dicos = rs(i)

            TextBox1.Text = i.ToString() + " " + dicos.Key.ToString()
            PictureBox1.Image = My.Resources.ResourceManager.GetObject(dicos.key)
            i += 1

        End Sub

    Je voudrais que pour la key0 Cartes00, key1 Cartes01, key3 Cartes03 etc....

    Problème, elles sortent dans un ordre aléatoire : key 0, Cartes03 ; key 1, Cartes 04; key 2, Cartes00 etc.... Par exemple

    Pourriez-vous m'aider, merci par avance.

    Cordialement 

    lundi 19 avril 2021 19:03

Toutes les réponses

  • Bonjour,

    Essayez avec la méthode ResourceSet.GetEnumerator. La réponse dans le thread suivant peut vous donner une idée: How to sort ResourceSet in C#.
    Veuillez consulter aussi: SortedDictionary<TKey,TValue> Classe.

    Cordialement,
    Nina

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 20 avril 2021 10:22
    Modérateur
  • Bonjour, merci pour votre aide, je vais essayer d'exploiter vos réponses.

    Cordialement

    mercredi 21 avril 2021 09:20
  • Merci pour votre aide nina 
    jeudi 22 avril 2021 09:11
  • Bonjour Nina, suite à votre aide, j'ai réussi à mettre dans l'ordre alphabétique les fichiers de ressource.

    Public Class Essai_Ressources
        Dim i As Integer
        ReadOnly rs As ResourceSet = My.Resources.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, True, True).OfType(Of DictionaryEntry).OrderBy(Of String)
        Dim dicos As IDictionaryEnumerator = rs.GetEnumerator()
        ReadOnly tridicos As New SortedDictionary(Of String, Bitmap)
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            TextBox1.Text = ""
            While dicos.MoveNext
                TextBox1.Text = TextBox1.Text & dicos.Key.ToString() & vbCrLf
                tridicos.Add(dicos.Key.ToString, CType(dicos.Value, Bitmap))
            End While
        End Sub

        Private Sub BT_Plus_Click(sender As Object, e As EventArgs) Handles BT_Plus.Click
            If i < 52 Then
                i += 1
            End If
            PictureBox1.Image = CType(My.Resources.ResourceManager.GetObject(tridicos.Keys(i)), Image)
        End Sub

        Private Sub Bt_Moins_Click(sender As Object, e As EventArgs) Handles Bt_Moins.Click
            If i > 0 Then
                i -= 1
            End If

            PictureBox1.Image = CType(My.Resources.ResourceManager.GetObject(tridicos.Keys(i)), Image)
        End Sub
    End Class

    Peut-on faire mieux ?

    J'ai essayé 

     ReadOnly rs As ResourceSet = My.Resources.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, True, True).OfType(Of DictionaryEntry).OrderBy(.........)

    Mais je bute, votre aide serait le bien venu.

    Merci par avance

    Bien cordialement

    dimanche 25 avril 2021 17:34