powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB.Net-диалог с WebBrowser из события Word
10 сообщений из 10, страница 1 из 1
VB.Net-диалог с WebBrowser из события Word
    #37945543
Zaharius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В моём приложении из 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
VB.Net-диалог с WebBrowser из события Word
    #37945621
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, это тот самый 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
VB.Net-диалог с WebBrowser из события Word
    #37945623
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, конечно - синтаксис не .NET. Но управление вам, насколько я понимаю, нужно экземпляром Word <= 2003...
...
Рейтинг: 0 / 0
VB.Net-диалог с WebBrowser из события Word
    #37945645
Zaharius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
VB.Net-диалог с WebBrowser из события Word
    #37945654
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А попробовать, как я написАл? С явным указанием объекта из библиотеки?
Код: vbnet
1.
set ... = New Me.Controls.Add("Forms.WebBrowser.1", "WebBrowser1")


?

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

SET, насколько я знаю, не поддерживается в VB.NET. Но и при создании нового браузера через DIM :
Dim wb = New Me.Controls.Add("Forms.WebBrowser.1", "WebBrowser1")
выдаёт ошибку (подчёркивает Me). Вроде как не правильный синтаксис, или может я не правильно Вас понял...
...
Рейтинг: 0 / 0
VB.Net-диалог с WebBrowser из события Word
    #37945703
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, если вы используете позднее связывание, - к проекту подключена библиотека 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
VB.Net-диалог с WebBrowser из события Word
    #37945734
Zaharius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

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

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

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


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