2010-01-05 2 views
0

J'ai encore un petit problème (j'espère) et je ne sais pas comment accéder à certaines propriétés de présentation fournies par PowerPoint (mais je ne sais pas Même savoir comment google ou chercher sur le site :() à partir de C# Je vais expliquer, nous pouvons accéder à une propriété TextRange à la fois en C# et VBA, via un assembly interop et MS-office-intégré VBA éditeur respectivement. C'est bon, mais cette propriété contient deux entités identiques - Runs VBA permet d'y accéder en tant que méthode et en tant que propriété (de plus, Runs l'intérieur des objets de propriété est utile), mais la propriété Runs n'est pas accessible via l'assembly interop, Runs() méthode est accessible uniquement (et il renvoie des objets d'exécution de texte.) J'ai creusé dans l'assembly interop utilisant .NET Reflector mais j'ai hav e n'a rien trouvé en rapport avec la propriété Runs (bien que les propriétés ayant des noms uniques différents de ceux des méthodes aient leurs propres méthodes get_Property() et set_Property()). Il semble que la propriété Runs est manquante dans l'assembly interop pour l'interface TextRange. Franchement, je ne suis pas sûr. :(Accéder à des entités COM de même nom à partir d'assemblys .NET

Puis-je obtenir en quelque sorte l'accès Runs propriété de C#? Je ne suis pas familier avec COM, etc, et je l'espère pour votre aide. Merci.

Répondre

1

Je pense que vous parlez de la Microsoft.Office Propriété .Core.TextRange2.Runs() .Il s'agit d'une propriété qui prend deux arguments, start et length.Cette propriété n'est pas directement accessible dans le langage C#, au moins pas until C# 4.0. Seul Visual Basic prend en charge les propriétés indexées en ce moment

La solution de contournement consiste à utiliser à la place get_Runs()

+0

Merci pour la réponse. Non, j'utilise Microsoft.Office.Interop.PowerPoint.TextRange, et il ne contient pas de définition pour get_Runs(). :(Aussi, malheureusement, je dois noter que j'utilise C# 2.0 et PowerPoint 2003. –

+0

Microsoft.Office.Interop.PowerPoint.TextRange a une méthode Runs(), ce n'est pas une propriété.Méfiez-vous que ces classes TextRange ne sont pas identiques, vous pouvez Ne pas mélanger un TextRange Word avec un TextRange PowerPoint –

+0

Cependant Microsoft.Office.Interop.PowerPoint.TextRange.Runs est également une propriété, et il est assez vu de VBA.Vous l'avez remarqué ci-dessus dans la réponse. voyez, je pointe la même entité à la fois de C# et VBA Bien sûr, je ne peux pas mélanger TextRange-s à partir d'espaces de noms Office et PowerPoint, mais ce n'est pas nécessaire, je veux juste obtenir la propriété .TextRange.Runs.Count. raison de la question. :) Mais ... Probablement puis-je mettre à jour la bibliothèque interop générée quand il n'y a pas de code source? Je voudrais l'améliorer avec quelque chose comme get_RunsData(). Quelque chose comme ça je suppose. –

0

En C# vous devez sp ecify où commencer et où finir:

...

foreach (TextRange txtrn dans txtrng.Runs (0, txtrng.Length)) {

si (txtrn.Font.Name = = "Arial") MessageBox.Show (txtrn.Text);

}

.....

+0

Merci, mais le problème était une incompréhension incomplète de la syntaxe VB (A) où les méthodes avec tous les paramètres omis ressemblent à des propriétés. –

Questions connexes