Открытие формы по событию

Тема в разделе ".NET", создана пользователем Dikobraz Grey, 28 сен 2009.

  1. Dikobraz Grey

    Dikobraz Grey Гость

    Всем доброго времени суток.

    Возникла интересная ситуация: есть две формы. Обе имеют обработчиков событий, происходящих с Word'ом. Первая форма все время открыта и "слушает" Word. По факту открытия документа в Word'e открывается вторая форма.

    [codebox] Private Sub oWord_ApplicationEvents3_Event_DocumentOpen(ByVal Doc As Word._Document) _
    Handles oWord.ApplicationEvents2_Event_DocumentOpen
    Dim frm As New Form()
    frm.Show()
    End Sub[/codebox]

    Форма конечно открывается, но к сожалению ее контекст не прогружается - внутри белый фон. При этом если открывать ее по нажатию кнопки, то тот же код:

    [codebox] Dim frm As New Form()
    frm.Show()[/codebox]
    прекрасно работает.

    Может кто знает, как обойти эту особенность или глюк? Может, это конечно и RTFM, но google ничего не дал, а в VB.Net я новичек. Всем заранее спасибо.
     
  2. etc

    etc Гость

    Кинте тут небольшую сборочку, с таким эфектом.
     
  3. Dikobraz Grey

    Dikobraz Grey Гость

    etc, прикрепил проект. Лишние бантики закомментил, хотя там почти и нет ничего. Писал в VB.Net 2008.
     

    Вложения:

  4. etc

    etc Гость

    тока сення заметил o_O ....
    Дело в том что вы создаете окно не в потоке своего приложения, а в потоке ворда (вроде(!)).
    Исправить просто, надо "дернуть" ваш главный поток и чтобы он создал окно сам.

    примерно так:

    Код (Text):
        Delegate Sub OpenHandler()

    Private Sub oWord_ApplicationEvents3_Event_DocumentOpen(ByVal Doc As Word._Document) _
    Handles oWord.ApplicationEvents2_Event_DocumentOpen
    'перехват события открытия документа в Word'e.
    Me.BeginInvoke(New OpenHandler(AddressOf OpenWindow))
    End Sub

    Private Sub OpenWindow()
    If (Me.InvokeRequired) Then
    Me.BeginInvoke(New OpenHandler(AddressOf OpenWindow))
    Else
    Dim frm As New Form()
    frm.Show()
    End If
    End Sub
    эта, я в бейсике не силен, поэтому могет быть не по правилам, но суть думаю должна быть понятна.
     
  5. Dikobraz Grey

    Dikobraz Grey Гость

    Спасибо, etc . Заработало.
     
Загрузка...

Поделиться этой страницей