Доступ Commandbarbutton.pictureC#

Место общения программистов C#
Ответить
Anonymous
 Доступ Commandbarbutton.picture

Сообщение Anonymous »

Я пытаюсь прочитать информацию о Microsoft Access (Office) CommandBars , содержащуюся в *.mdb. Я мог бы использовать microsoft.office.interop.access для этого; Однако эти собрания PIA связаны с конкретными офисными версиями. Поэтому, чтобы быть независимым от версии, я делаю это в позднем случае через динамический тип C#. То есть у меня нет ссылок на специальные сборки Microsoft Office. Цена для этого заключается в том, что доступ к стержням команд теперь слабо вводится. Это конденсированная версия моего реального кода, чтобы проиллюстрировать проблему: < /p>

Код: Выделить всё

dynamic access =  Activator.CreateInstance(Type.GetTypeFromProgID("Access.Application", true));
// Starts an Access XP (2002) process in my case, but could be any version.

foreach (dynamic commandBar in access.CommandBars) {
if (!commandBar.BuiltIn) { // Only my menus and toolbars.
foreach (dynamic control in commandBar.Controls) {
if (control.Type == (int)MsoControlType.msoControlButton && !control.BuiltInFace) {
string caption = control.Caption; // Works.
stdole.IPictureDisp picture = control.Picture; // 

Вызов Getter of the CommandBarbutton.picture < /code> свойства отбрасывает это исключение: < /p>


 катастрофическая неудача (исключение из hresult: 0x8000fffff (e_unexpret)) < /pslios>
system.dynamic.comruntimehelpers.checkthrowexcept System.dynamic.updatedElegates.updateAndexecute1 [t0, Tret] (сайт Callsite, T0 Arg0)

at system.dynamic.updatedelegates.updateandexecute1 64 < /p>
< /blockquote>

Как я могу получить изображение, избегая этого исключения? У меня уже есть решение для этого. Кроме того, это не имеет значения, печатается ли Picture 
как Object , Dynamic или ipicturedisp . Свойство существует, в противном случае я бы получил исключение 'System .__ Comobject', не содержит определения для 'picture' < /code>. < /P>

Это .net Framework 4.0 Windows Project, составленный для x86 (32-битный). Сборки (PIA) допускает сильную набор, но не решает проблему. Исключение сохраняется < /strong>. < /p>

Между тем я читал больше о PIAS. Поскольку .NET Framework 4.0 вы можете настроить свойства ссылки на сборку, чтобы сделать их версией независимыми. Щелкните правой кнопкой мыши SERICTIENCS/MICROSOFT.OFFICE.Interop.access и


[*] Установить типы embed interop true .
Установите конкретную версию forse . Ссылки / Офис < / em> также. Поэтому я буду переходить на PIAS вместо использования Dynamic .

Подробнее здесь: https://stackoverflow.com/questions/599 ... -bound-way
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»