Страница: 1 |
Страница: 1 |
Вопрос: Вызов VB.Net-диалога из события Word
Добавлено: 31.08.12 22:06
Автор вопроса: Zahar | Web-сайт:
В моём приложении из VB.Net загружаются документы Word. Необходимо осуществить открытие диалогового окна (VB.Net-формы) при событии нажатия пользователем правой кнопки в вордовском документе. В принципе всё работает, но столкнулся с одной проблемой, модель которой представлена в простеньком коде:
При подключённой сборке Word созданы две стандартные формы: Form1 (с двумя кнопками Button1, Button2) и Dialog1 (в которой по ходу загрузки программы создаётся TextBox).
Код программы такой:
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-сайт:
Профиль | | #2
Добавлено: 01.09.12 08:57
В примере видно, что txtBox - единственный контрол на форме и под другими оказаться просто не может. Так же нет ему никаких причин менять свои размеры или положение - и он этого не делает - при нажатии на Button1 мы видим, что txtBox всё время остается на своем месте и со своими размерами.
Номер ответа: 3
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #3
Добавлено: 01.09.12 10:23
В примере видно, что txtBox - единственный контрол на форме
Где это видно? Ты разве выкладывал код формы и дизайнера Dialog1?
Меня смущает то,что ты обращаешься к Dialog1 без создания экземпляра(по всей видимости это примочка VB) и есть вероятность того, что тебе показываются разные экземпляры этого окна. Попробуй явно создать экземпляр формы Dialog1 и работать с именно с ним не полагаясь на то,что тебе подсовывает VB