我有一个VSTO加载项为MS项目打开,其中数据与处于活动状态时,形式是开放的具体项目文件的形式。 它可以打开相关的一个项目文件一种形式,同时具有相关的第二个开放项目文件中的另一个不同的形式开放。
当我收的工程文件,我想检查每一个开放的形式,如果形式基地项目ID等于被关闭项目文件的项目ID将其关闭。 如何访问VSTO应用程序的开放形式收集(或做一些等价物)? 该Application.OpenForms对象不会出现在VSTO世界存在。
我有一个VSTO加载项为MS项目打开,其中数据与处于活动状态时,形式是开放的具体项目文件的形式。 它可以打开相关的一个项目文件一种形式,同时具有相关的第二个开放项目文件中的另一个不同的形式开放。
当我收的工程文件,我想检查每一个开放的形式,如果形式基地项目ID等于被关闭项目文件的项目ID将其关闭。 如何访问VSTO应用程序的开放形式收集(或做一些等价物)? 该Application.OpenForms对象不会出现在VSTO世界存在。
使用字典对象存储形式的实例与文件名一起。 每次创建表单时,将它添加到字典中,当项目关闭,搜索词典,关闭相应的副本。
Friend ProjectForms As New Dictionary(Of String, MyForm)
Friend Sub ShowForm()
Dim f As New MyForm
Try
ProjectForms.Add(ProjApp.ActiveProject.Name, f)
Catch AlreadyInTheDictionary As Exception
' do nothing, it's already in the dictionary
End Try
f.Show()
End Sub
与应用程序事件(通常的ThisAddIn)模块中把这个。
Private Sub Application_ProjectBeforeClose(pj As MSProject.Project, ByRef Cancel As Boolean) Handles Application.ProjectBeforeClose
ProjectForms(pj.Name).Close()
End Sub