В моём приложении из VB.Net загружаются документы Word. Необходимо осуществить открытие диалогового окна (VB.Net-формы) при событии нажатия пользователем правой кнопки в вордовском документе. В принципе всё работает, но столкнулся с одной проблемой, модель которой представлена в простеньком коде:
При подключённой сборке Word созданы две стандартные формы: Form1 (c кнопкой Button1) и Dialog1.
Код программы такой:
Imports Microsoft.Office.Interop
Public Class Form1
Private WithEvents wdApp As New Word.Application
Private WithEvents wdDoc As New Word.Document
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
wdDoc = wdApp.Documents.Add
wdDoc.ActiveWindow.Visible = True
End Sub
Private Sub wdApp_WindowBeforeRightClick(ByVal Sel As Microsoft.Office.Interop.Word.Selection, ByRef Cancel As Boolean) Handles wdApp.WindowBeforeRightClick
Cancel = True
Dialog1.ShowDialog()
End Sub
End Class
При нажатии кнопки №1 открывается документ Word. При клике правой кнопкой мыши в создавшемся документе открывается диалоговое окно Dialog1. В данное окно можно поместить любые контролы и они будут прекрасно работать, за исключением WebBrowser. Если в Dialog1 поместить WebBrowser, то при обработке события WindowBeforeRightClick выскакивает ошибка: Ошибка при создании формы. См. Exception.InnerException. Ошибка: «Создание экземпляра элемента ActiveX "8856f961-340a-11d0-a96b-00c04fd705a2" невозможно: текущий поток не находится в однопоточном контейнере.»
Почему эта ошибка возникает только с браузером и как всё-таки при обработке вордовского события подгружать форму с работающим браузером?
Ответить
|