我需要在vb.net中为Word做一个VSTO加载项。我创建了一个自定义任务窗格,并希望在运行时为其添加图片和标签。我可以使用GetVstoObject方法获取活动文档并将标签添加到文档正文中。这有效。但是,我需要将标签添加到任务窗格。我可以使用GetVstoObject来获取自定义任务窗格对象吗?似乎该方法只接受类型文档。
这是我的ThisAddIn课程:
Public Class ThisAddIn
Private definitionsChecker As DefinitionsCheckerControl
Private taskPane As Microsoft.Office.Tools.CustomTaskPane
Private Sub ThisAddIn_Startup() Handles Me.Startup
definitionsChecker = New DefinitionsCheckerControl
taskPane = Me.CustomTaskPanes.Add(definitionsChecker, "Definitions Checker")
taskPane.Visible = True
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
End Class
这是包含自定义任务窗格控件的类:
Public Class DefinitionsCheckerControl
' This procedure works
Private Sub addLabelToDoc()
Dim document As Word.Document
Dim vstoDocument As Document
Dim mylabel As System.Windows.Forms.Label
document = Globals.ThisAddIn.Application.ActiveDocument
vstoDocument = Globals.Factory.GetVstoObject(document)
mylabel = vstoDocument.Controls.AddLabel(document.Paragraphs(30).Range, 30, 12, "label2")
mylabel.Text = "This is a label."
End Sub
' This procedure I need to modify where I added question marks
Private Sub addLabelToTaskPane()
Dim document As Word.????
Dim vstoDocument As ????
Dim mylabel As System.Windows.Forms.Label
document = Globals.ThisAddIn.Application.ActiveDocument
vstoDocument = Globals.Factory.GetVstoObject(document)
mylabel = vstoDocument.Controls.AddLabel(????, 30, 12, "label2")
mylabel.Text = "This is a label."
End Sub
Private Sub btnRunTool_Click(sender As Object, e As EventArgs) Handles btnRunTool.Click
addLabelToTaskPane()
End Sub
End Class
答案 0 :(得分:0)
GetVstoObject
方法用于“包装”扩展VSTO对象中的本机Office对象。对于Word,这可以是Document,Range或ContentControl。
它不习惯使用自定义任务窗格。您处理CTP的方式与Windows窗体的处理方式非常相似。
我将假设代码示例中的definitionsChecker
是您要添加到任务窗格(taskPane
)的UserControl。在这种情况下,您将新控件(标签)添加到definitionsChecker
(UserControl)。像这样:
Dim mylabel As System.Windows.Forms.Label = new System.Windows.Forms.Label()
myLabel.Text = "text in the label"
definitionsChecker.Controls.Add(mylabel)
答案 1 :(得分:0)
你是对的。谢谢你让我回到赛道上。还有一个问题破坏了我的代码,我正在寻找解决方案,而不是。