Доступ к одноименным COM-объектам из сборок .NET - PullRequest
0 голосов
/ 05 января 2010

У меня снова возникла крошечная (я надеюсь) проблема, и я не знаю, как получить доступ к некоторым свойствам презентации, предоставляемым PowerPoint (однако я даже не знаю, как это сделать в Google или выполнить поиск в site :() из C #. Позвольте мне объяснить. Мы можем получить доступ к свойству TextRange как в C #, так и в VBA, через сборку взаимодействия и встроенный редактор ms-office VBA соответственно. Это нормально, но это свойство содержит два одинаковых именованные сущности - Runs. VBA позволяет обращаться к нему как к методу и как к свойству (более того, Runs внутренности объекта свойства полезны), но свойство Runs недоступно через сборку взаимодействия, Runs() Доступ к методу возможен только (и он возвращает текстовые объекты запуска). Я копал в сборке взаимодействия с помощью .NET Reflector, но я не нашел ничего связанного со свойством Runs (хотя свойства с уникальными, а не именами методов имеют собственные методы get_Property() и set_Property(). Кажется, что в сборке взаимодействия отсутствует свойство Runs для интерфейса TextRange. Честно говоря, я Я не уверен. (

Можно ли как-нибудь получить свойство доступа Runs из C #? Я не знаком с COM и т. Д. И надеюсь на вашу помощь. Спасибо.

Ответы [ 2 ]

1 голос
/ 05 января 2010

Я думаю, вы говорите о свойстве Microsoft.Office.Core.TextRange2.Runs (). Это свойство, которое принимает два аргумента, начало и длину. Такое свойство не доступно напрямую на языке C #, по крайней мере, не до C # 4.0 . Только Visual Basic поддерживает индексированные свойства прямо сейчас.

Обходной путь должен использовать вместо этого get_Runs ().

0 голосов
/ 25 января 2010

В C # вы должны указать, где начинать и где заканчивать:

...

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

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

}

.....

...