none
Est-il possible de choisir une resource a l'aide d'une variable? RRS feed

  • Question

  • Dans mon petit exemple affiché plus bas, j'utilise une série de .WAV qui portent les noms tt0 a tt9.
    Ce sont les sons émis par un clavier de téléphone.

    Pour chaque chiffre inscrit dans TextBox1 je désire émettre le son qui lui
    correspond. Dans mon exemple j'ai fixé le son a tt4. Donc chaque chiffre
    émet présentement le même son. Une série de IF ou de CASE me permettrais
    probablement de compléter l'ensemble. Beaucoup de ligne de codes répétées?


    Est-il possible de choisir une ressource a l'aide d'une variable. Pas
    nécessairement de façon aussi simplement que les lignes que j'ai mises en
    commentaire, mais moins long que de réécrire les mêmes lignes en changeant
    le nom de la ressource.

    Public Class Form1

        Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

            Dim KeyAscii As Integer = Asc(e.KeyChar)

            '/*emet un son (PhoneTone) selon la touche
            If KeyAscii > 47 And KeyAscii < 58 Then  'ASCII 48 a 57 = chiffre 0 a 9

                Dim sonChiffre As New System.Media.SoundPlayer(My.Resources.tt4)

                ' Dim UneVariable = CStr(KeyAscii - 48)
                ' UneVariable = "tt" + UneVariable
                ' Dim sonChiffre As New System.Media.SoundPlayer(My.Resources.UneVariable)

                sonChiffre.play()

            End If

        End Sub


    samedi 9 avril 2011 23:13

Réponses

  • Bonjour,

    My.Resouces.NomRes est en fait une simple aide permettent de bénéficier d'intellisense lorsqu'on veut récupérer une ressource précise.

    Il reste possible d'accéder aux ressources en utilisant par exemple pour des sons My.Resources.ResourceManager.GetStream("NomRes") (ou bien sûr une variable qui contiendrait le nom de la ressource à récupérer).

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Proposé comme réponse Foleide. _ dimanche 10 avril 2011 15:05
    • Marqué comme réponse Ciprian Duduiala lundi 18 avril 2011 05:52
    dimanche 10 avril 2011 08:43
    Modérateur

Toutes les réponses

  • Bonjour,

    Pour une dizaine de ressources (avec le copier/coller) je crois ue ton système est bon dans un select case, car afficher une variable contenant le chemin d'une ressource sera aussi long que d'appeler directement la ressource.

    Cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Proposé comme réponse EhJoe dimanche 10 avril 2011 06:24
    dimanche 10 avril 2011 06:24
  • Bonjour,

    My.Resouces.NomRes est en fait une simple aide permettent de bénéficier d'intellisense lorsqu'on veut récupérer une ressource précise.

    Il reste possible d'accéder aux ressources en utilisant par exemple pour des sons My.Resources.ResourceManager.GetStream("NomRes") (ou bien sûr une variable qui contiendrait le nom de la ressource à récupérer).

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Proposé comme réponse Foleide. _ dimanche 10 avril 2011 15:05
    • Marqué comme réponse Ciprian Duduiala lundi 18 avril 2011 05:52
    dimanche 10 avril 2011 08:43
    Modérateur
  • Bonjour,

     

    Merci pour les deux informations. 

    Petit complément.  Dans My.Resources.ResourceManager il existe d'autres Getxxx.  Je présume que si , exemple, mes ressources étaient des STRING's, GetString ferrait  le même travail que GetStream pour les WAVE's?  Il en serait de même, je suppose, pour les autres types de ressources?

    Merci


    dimanche 10 avril 2011 14:47
  • Oui, c'est cela.

    En complément de l'information de Patrice, j'ajouterai que tu peux aller voir le contenu du fichier Resources.Designer.vb

    Tu constateras que pour chaque ressource ajoutée via l'IDE, Visual Studio génère du code pour ajouter une nouvelle propriété du nom de la ressource.
    Le code dont tu as besoin est en fait exactement celui qui est généré.

    dimanche 10 avril 2011 15:05
  • Bonjour,

    Premièrement, merci a tous. 

    Merci Foleide pour le complément.  Effectivement, en utilisant le contenue du fichier Resources.Designer.vb, il devient plus facile de déterminer quel sous fonction du ResourceManager il faut appeler en regard de la ressource désiré.

    lundi 11 avril 2011 22:48