如何在 VSTO 加载项中显示 WPF window?
How can I show a WPF window in a VSTO add-in?
我正在第一次将我的 VBA 代码迁移到 VSTO,以便为 excel 创建一个 COM 加载项。我能够将所有代码转换为 vb。不幸的是,我在 VS2017 中创建 Windows 表单时遇到了困难。我尝试添加 windows 表格,但我没有看到任何 Windows 表格。相反,我可以只添加用户控件 (WPF)。
我确实设法使用 XAML 创建了表单,但我遇到的最大问题是如何初始化表单。
下面是导入的
Imports Microsoft.Office.Interop.Excel
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Windows.Forms
我在下面的代码中看到以下错误
句柄 MyBase.Load --> 找不到事件 "Load"
此后我没有看到任何工作。谁能解释一下我们如何处理加载和卸载用户控件 (WPF)。还有为什么我无法导入 windows 表格。
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
经过千辛万苦 运行 问题的背后,我发现 Windows Form 没有安装在我的 VS 中。我已经包含了这个包,现在我可以工作了。
我正在第一次将我的 VBA 代码迁移到 VSTO,以便为 excel 创建一个 COM 加载项。我能够将所有代码转换为 vb。不幸的是,我在 VS2017 中创建 Windows 表单时遇到了困难。我尝试添加 windows 表格,但我没有看到任何 Windows 表格。相反,我可以只添加用户控件 (WPF)。
我确实设法使用 XAML 创建了表单,但我遇到的最大问题是如何初始化表单。
下面是导入的
Imports Microsoft.Office.Interop.Excel
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Windows.Forms
我在下面的代码中看到以下错误
句柄 MyBase.Load --> 找不到事件 "Load"
此后我没有看到任何工作。谁能解释一下我们如何处理加载和卸载用户控件 (WPF)。还有为什么我无法导入 windows 表格。
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
经过千辛万苦 运行 问题的背后,我发现 Windows Form 没有安装在我的 VS 中。我已经包含了这个包,现在我可以工作了。