VSTO避免多次加载窗体
2021-03-02 03:25
标签:als cep 一个 windows end 演示 string send load 使用VSTO编写Excel的加载项时,可动态地增加用户窗体,也可调用使用手工方法添加的Windows窗体。 Dim frm_演示 as 手工窗体 ‘这个手工窗体是通过“项目-添加窗体(Windows窗体)",将新添加的窗体命名为”手工窗体“。 定义 frm_演示 变量时,要将放在“类内”、“过程外”,即“类的私有变量”。 然后判断是否实例化来确定是否需要 “frm_演示 = New 手工窗体”。 在程序运行过程中关闭窗体,会引发Disposal,此时,frm_演示 仍处于实例化状态,所以,"frm_演示 Is Nothing" 为“真”,但“frm_演示.Show()"时出错。 所以,要通过“Try”来处理。 为避免多次打开,可通过 Application.OpenForms.Count 来判断。当然,窗体数量超过1个时,要通过窗体名字等来判断。这里不赘述。 Imports Microsoft.Office.Tools.Ribbon Public Class Excel加载项 End If End Sub VSTO避免多次加载窗体 标签:als cep 一个 windows end 演示 string send load 原文地址:https://www.cnblogs.com/doctor-cao/p/13070155.html
Windows窗体其实是一个“类”,所以,调用手工添加的已经存在的Windows窗体时,使用这样的代码:
Dim frm_演示 As手工 窗体
dim str_Msg as String‘用于查看错误代码.
Private Sub 演示_Load(ByVal sender As System.Object, ByVal e As RibbonUIEventArgs) Handles MyBase.Load
If frm_演示 Is Nothing Then
frm_演示 = New 手工窗体
Else
Try
frm_演示.Show()
Catch ex As Exception
str_Msg = String.Format("{0}ralsed exception :{1}", ex.Source, ex.Message)
MsgBox(str_Msg)‘看一下错误代码是什么。
frm_演示 = New 手工窗体
End Try
End If
‘通过判断打工的窗体数来决定是否要使用 “frm_演示.Show()"。
If Application.OpenForms.Count = 0 Then
frm_演示.Show()