Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Вызов VB.Net-диалога из события Word Добавлено: 31.08.12 22:06  

Автор вопроса:  Zahar | Web-сайт: partnerka-ru.info
В моём приложении из VB.Net загружаются документы Word. Необходимо осуществить открытие диалогового окна (VB.Net-формы) при событии нажатия пользователем правой кнопки в вордовском документе. В принципе всё работает, но столкнулся с одной проблемой, модель которой представлена в простеньком коде:
При подключённой сборке Word созданы две стандартные формы: Form1 (с двумя кнопками Button1, Button2) и Dialog1 (в которой по ходу загрузки программы создаётся TextBox).
Код программы такой:
Imports Microsoft.Office.Interop

Public Class Form1
    Private WithEvents wdApp As New Word.Application
    Private WithEvents wdDoc As New Word.Document
    Private txtBox As New TextBox

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dialog1.Controls.Add(txtBox)
        txtBox.Visible = True
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dialog1.ShowDialog()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.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 открывается диалоговое окно, в котором виден текстбокс.
При нажатии кнопки №2 и клике правой кнопкой мыши в создавшемся документе диалоговое окно тоже открывается, однако в нём почему-то не виден текстбокс.
Если добавить тот же textbox до запуска программы, то он будет виден, но мне нужно добавлять контролы в диалоговую форму именно по ходу выполнения программы.
Помогите решить проблему…

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 01.09.12 00:54
<telepat_mode>
Возможно, твой txtBox во втором случае имеет координаты ЗА размерами формы либо очень маленькие размеры.. Проверь в рантайме Location & Sizе
либо он находится ПОД другими контролами (например Panel каким-нибудь).. В этом случае надо будет явно задать порядок лементов
</telepat_mode>

Ответить

Номер ответа: 2
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #2
Добавлено: 01.09.12 08:57
В примере видно, что txtBox - единственный контрол на форме и под другими оказаться просто не может. Так же нет ему никаких причин менять свои размеры или положение - и он этого не делает - при нажатии на Button1 мы видим, что txtBox всё время остается на своем месте и со своими размерами.

Ответить

Номер ответа: 3
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 01.09.12 10:23
Zahar пишет:
В примере видно, что txtBox - единственный контрол на форме

Где это видно? Ты разве выкладывал код формы и дизайнера Dialog1?

Меня смущает то,что ты обращаешься к Dialog1 без создания экземпляра(по всей видимости это примочка VB) и есть вероятность того, что тебе показываются разные экземпляры этого окна. Попробуй явно создать экземпляр формы Dialog1 и работать с именно с ним не полагаясь на то,что тебе подсовывает VB

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам