Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB.Net-диалог с WebBrowser из события Word / 10 сообщений из 10, страница 1 из 1
05.09.2012, 20:55
    #37945543
Zaharius
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.Net-диалог с WebBrowser из события Word
В моём приложении из VB.Net загружаются документы Word. Необходимо осуществить открытие диалогового окна (VB.Net-формы) при событии нажатия пользователем правой кнопки в вордовском документе. В принципе всё работает, но столкнулся с одной проблемой, модель которой представлена в простеньком коде:
При подключённой сборке Word созданы две стандартные формы: Form1 (c кнопкой Button1) и Dialog1.
Код программы такой:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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" невозможно: текущий поток не находится в однопоточном контейнере.»

Почему эта ошибка возникает только с браузером и как всё-таки при обработке вордовского события подгружать форму с работающим браузером?
...
Рейтинг: 0 / 0
05.09.2012, 22:39
    #37945621
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.Net-диалог с WebBrowser из события Word
Да, это тот самый WebBrowser от MS...

А если элемент помещать на форму динамически, уже после создания инстанса Word2003?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Set oWebBrowser = Dialog1.Controls.Add("Forms.WebBrowser.1", "WebBrowser1")
With oWebBrowser
    .Enabled = True
    .Top = 6
    .Left = 6
    .Width = 108
    .Height = 108
' etc
    .Navigate "http://www.sql.ru/forum/actualthread.aspx?tid=967533"
End With
...
Рейтинг: 0 / 0
05.09.2012, 22:42
    #37945623
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.Net-диалог с WebBrowser из события Word
Извиняюсь, конечно - синтаксис не .NET. Но управление вам, насколько я понимаю, нужно экземпляром Word <= 2003...
...
Рейтинг: 0 / 0
05.09.2012, 23:09
    #37945645
Zaharius
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.Net-диалог с WebBrowser из события Word
AndreTM,
Да я уже и пробовал:

Private Sub Dialog1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim wb As New WebBrowser
Me.Controls.Add(Me)
End Sub


Выдаёт ошибку: «Создание экземпляра элемента ActiveX "8856f961-340a-11d0-a96b-00c04fd705a2" невозможно: текущий поток не находится в однопоточном контейнере.» Только уже в самой подпограмме загрузки диалогового окна.
...
Рейтинг: 0 / 0
05.09.2012, 23:16
    #37945654
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.Net-диалог с WebBrowser из события Word
А попробовать, как я написАл? С явным указанием объекта из библиотеки?
Код: vbnet
1.
set ... = New Me.Controls.Add("Forms.WebBrowser.1", "WebBrowser1")


?

Если же "ошибка повторяется" - попробуйте воспроизвести данный код на другом компе/под другой ОС
...
Рейтинг: 0 / 0
05.09.2012, 23:32
    #37945679
Zaharius
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.Net-диалог с WebBrowser из события Word
AndreTM,

SET, насколько я знаю, не поддерживается в VB.NET. Но и при создании нового браузера через DIM :
Dim wb = New Me.Controls.Add("Forms.WebBrowser.1", "WebBrowser1")
выдаёт ошибку (подчёркивает Me). Вроде как не правильный синтаксис, или может я не правильно Вас понял...
...
Рейтинг: 0 / 0
05.09.2012, 23:51
    #37945703
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.Net-диалог с WebBrowser из события Word
Кстати, если вы используете позднее связывание, - к проекту подключена библиотека MS Forms 2.0 ?

Ну и насчёт команд в VB.NET - просто
Код: vbnet
1.
2.
3.
4.
Private Sub Dialog1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Dim wb As New WebBrowser
 Me.Controls.Add("Forms.WebBrowser.1", "WebBrowser1")
End Sub

что выдает?
...
Рейтинг: 0 / 0
06.09.2012, 00:16
    #37945734
Zaharius
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.Net-диалог с WebBrowser из события Word
AndreTM,

Ошибка 1 Невозможно преобразовать значение типа "String" в "System.Windows.Forms.Control"
Ошибка 2 Слишком большое число аргументов у "Public Overridable Sub Add(value As System.Windows.Forms.Control)".

Короче требует задавать исключительно тип соответствующего контрола :(
...
Рейтинг: 0 / 0
06.09.2012, 00:20
    #37945738
Zaharius
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.Net-диалог с WebBrowser из события Word
Подключил Microsoft Forms 2.0 - результат тот же.
...
Рейтинг: 0 / 0
11.09.2012, 00:21
    #37951852
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.Net-диалог с WebBrowser из события Word
Zaharius,

Не очень ясно: как событие с параметром Microsoft.Office.Interop.Word.Selection и поддерживающее правый клик в Word.Application может поддерживать браузер?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB.Net-диалог с WebBrowser из события Word / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]