C этого места по подробней. С какого начала?
Я может действительно не понимаю о чем идет речь, НО:
При нажатии кнопки на ленте происходит открытие формы с помощью маленького кода:
Dim myNewForm As New Form1()
myNewForm.Show()
но что в данном коде не так? Дело в том, что форма открылась, а связи с Revit-ом у нее НЕТу. Это просто форма, которая болтается, как кошка: «сама по-себе». Всеми правдами и неправдами я пытался найти способ вывести сообщение о версии приложения Revit через эту «свободную от Revit-а форму». У меня это не получилось!
Затем я решил попробовать при запуске формы передать в процедуру ее инициализации ту самую переменную
CommandData:
Dim myNewForm As New Form1(commandData) ' Вот эта переменная (объект)
myNewForm.Show()
и прописал процедуру ее инициализации с входящим в нее аргументом
commandData:
Public Sub New(ByVal commandData As ExternalCommandData)
MyBase.New()
InitializeComponent()
myCD = commandData
End Sub
Получилось так, что я передал форме в момент «ее рождения» тот самый объект -
commandData. Типа сделал связку с Revit-ом. Понимаете о чем я? То есть я не подключал ExternalCommandData, как экземпляр класса, внутри класса формы, а получил ее извне - из той процедуры, которая создала эту форму.
И поверьте мне - другого решения я не смог найти.
Вообще первоначально спрашивали как номер версии вывести. Про какие-то мифические проблемы инициализации формы речи не шло.
Я понимаю... мне действительно стоило подробнее написать об этой задаче, но увы... Буду стараться впредь писать подробнее.
мифические проблемы
Может и так, но я реально столкнулся с тем, что объявляя переменную Private myCommandData As ExternalCommandData привело меня к тому, что
Revit просто сказал мне, что нет экземпляра этого класса. И я его понимаю. Это как если бы мне сказали: «К тебе человек должен прийти и ты должен ему кое-что дать... А я бы им в ответ: какой человек? Как его зовут? Как выглядит этот человек?» и т.д.
Недоволен тем остался, что долго искал ответ. Других недовольств у меня нет.