如何在 VSTO 外接程序中显示 WPF 窗口



我第一次将我的 VBA 代码迁移到 VSTO,以创建适用于 Excel 的 COM 加载项。我能够将所有代码转换为 vb。 不幸的是,我在VS2017中创建Windows表单时遇到困难。我尝试添加窗口窗体,但我没有看到任何Windows窗体。相反,我只能添加用户控件 (WPF(。

我确实设法使用 XAML 创建了表单,但我遇到的最大问题是如何初始化表单。

进口如下

Imports Microsoft.Office.Interop.Excel
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Windows.Forms

我在下面的代码中看到以下错误

处理 MyBase.Load -->找不到事件"Load">

在此之后,我没有看到任何工作。有人可以解释一下我们如何处理加载和卸载用户控件 (WPF( 吗?这也是为什么我无法导入窗口表单的原因。

Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim RefSht As Object
    Dim TableList() As String
    Dim IDTable As String
    Dim count As Integer : count = 0
    Dim TextBox1 As System.Windows.Controls.TextBox
    Dim TextBox2 As System.Windows.Controls.TextBox
    Dim TextBox3 As System.Windows.Controls.TextBox
    Dim TextBox4 As System.Windows.Controls.TextBox
    Dim TextBox5 As System.Windows.Controls.TextBox
    Dim TextBox6 As System.Windows.Controls.TextBox
    Dim cmbIDTable As System.Windows.Controls.ComboBox
    Dim wb As Excel.Workbook = Globals.ThisAddIn.Application.ActiveWorkbook
    RefSht = wb.Worksheets("RefSheet")
    On Error Resume Next
    IDTable = ReportSheet.Range("IDTable")
    TextBox1.Text = ReportSheet.Range("Title")
    TextBox2.Text = ReportSheet.Range("Component")
    TextBox3.Text = ReportSheet.Range("Selection")
    TextBox4.Text = ReportSheet.Range("Parameters")
    TextBox5.Text = ReportSheet.Range("Summary")
    TextBox6.Text = ReportSheet.Range("Category")
    TableList = Split(GetTableListData(), ";")
    cmbIDTable.ItemsSource = TableList
    While IDTable <> TableList(count)
        count = count + 1
    End While
    cmbIDTable.SelectedItem = count
End Sub

在问题背后遇到很多麻烦之后,我发现我的VS中没有安装Windows表单。我已经包含了这个包,我现在能够工作了。

最新更新