+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité régulier
    Inscrit en
    avril 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : avril 2006
    Messages : 18
    Points : 5
    Points
    5

    Par défaut Traduction c# en vb.net

    Bonjour à tous,

    Je chercher à remplacer une image dans un fichier docx en openXML.

    J'ai trouvé un morceau de code qui fait cela par contre il est en C# et je n'arrive pas à le traduit en Vb.net, voici la partie qui me pose problème.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
     SdtBlock cc = doc.MainDocumentPart.Document.Body.Descendants<SdtBlock>()
                        .FirstOrDefault(c =>
                        {
                            SdtProperties p = c.Elements<SdtProperties>().FirstOrDefault();
                            if (p != null)
                            {
                                // Is it a picture content control?
                                SdtContentPicture pict =
                                    p.Elements<SdtContentPicture>().FirstOrDefault();
                                // Get the alias.
                                SdtAlias a = p.Elements<SdtAlias>().FirstOrDefault();
                                if (pict != null && a.Val == "MyPicture")
                                    return true;
                            }
                            return false;
                        });
    Voici ce que j'ai traduit mais j'ai toujours des erreurs.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Dim cc As SdtBlock = doc.MainDocumentPart.Document.Body.Descendants(Of SdtBlock)().FirstOrDefault(Function(c))
            Dim p As SdtProperties = c.Elements(Of SdtProperties)().FirstOrDefault()
            If (p IsNot Nothing) Then
                ' Is it a picture content control?
                Dim pict As SdtContentPicture = p.Element(Of SdtContentPicture)().FirstOrDefault()
                ' Get the alias.
                Dim a As SdtAlias = p.Elements(Of SdtAlias)().FirstOrDefault()
                If (pict IsNot Nothing And a.Val = "MyPicture") Then
                    Return True
                End If
            End If
         Return False
    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur



    Homme Profil pro
    Développeur .NET
    Inscrit en
    février 2004
    Messages
    19 328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2004
    Messages : 19 328
    Points : 39 175
    Points
    39 175

    Par défaut

    Ton problème est ici :

    FirstOrDefault(Function(c))
    Tu passes une fonction vide en paramètre de FirstOrDefault, alors que dans le code C# cette fonction continue jusqu'à la fin du code...

    Essaie ce convertisseur si tu ne veux pas faire la conversion manuellement. Ca donne quelque chose comme ça :


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim cc As SdtBlock = doc.MainDocumentPart.Document.Body.Descendants(Of SdtBlock)().FirstOrDefault(Function(c) 
        Dim p As SdtProperties = c.Elements(Of SdtProperties)().FirstOrDefault()
        If p IsNot Nothing Then
            ' Is it a picture content control?
            Dim pict As SdtContentPicture = p.Elements(Of SdtContentPicture)().FirstOrDefault()
            ' Get the alias.
            Dim a As SdtAlias = p.Elements(Of SdtAlias)().FirstOrDefault()
            If pict IsNot Nothing AndAlso a.Val = "MyPicture" Then
                Return True
            End If
        End If
        Return False
     
        End Function)

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •