原文作者:Norm Estabrook
原文链接:
好消息, Project 2010 现在可以支持自定义任务窗格!坏消息,让自定义任务窗格显示在一个 Project 2010中并是不是那么显而易见。总的来说还是一个好消息,因为实现起来比听起来容易的多。
在这里,我会向大家演示如何利用 Visual Studio 中project 2010 或者Project 2007 的项目模板来给project 2010添加自定义任务窗格 .
Microsoft Office Project中任务窗格的简单概述
在Project 2007中并不支持自定义任务窗格,而现在Project 2010支持它。然而,在Visual Studio 里面Project 2010 的项目模板并没有公开显示自定义任务窗格这一项,这也许会让你有点泄气。因为你知道,有了这一项,就可以通过 代码this.CustomTaskPanes 或者 Me.CustomTaskPanes访问CustomTaskPaneCollection 对象。
不过不用担心,我们可以自己创建一个CustomTaskPaneCollection对象。具体需要什么样的代码来完成这个则由你的项目绑定的.Net Framework 的版本来决定。
那么现在,在你的工程中添加一个用户控件User Control。这个控件给你的自定义任务窗格提供了界面设计。接下来,明确你要绑定的.Net Framework的版本。如果你创建的是一个新的Project 2010的项目,那么唯一的选择就是绑定 .NET Framework 4。尽管如此,确认版本一下也没什么大碍。这里有一片很有用的文章,主要就是介绍关于这个内容。.
等你做完了所有上面的步骤,把下面的代码添加到项目中。
对于绑定 .NET Framework 4的项目:
[VB]
Private myUserControl1 As MyUserControl
Private myCustomTaskPane As Microsoft.Office.Tools.CustomTaskPane
Private myCustomTaskPaneCollection As Microsoft.Office.Tools.CustomTaskPaneCollection
Private Sub ThisAddIn_Startup() Handles Me.Startup
myUserControl1 = New MyUserControl
myCustomTaskPaneCollection = Globals.Factory.CreateCustomTaskPaneCollection _
(Nothing, Nothing, "CustomTaskPanes", "CustomTaskPanes", Me)
myCustomTaskPane = myCustomTaskPaneCollection.Add(myUserControl1, "My Task Pane")
myCustomTaskPane.Visible = True
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
myCustomTaskPaneCollection.Dispose()
End Sub
[C#]
private MyUserControl myUserControl1;
private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane;
private Microsoft.Office.Tools.CustomTaskPaneCollection myCustomTaskPaneCollection;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
myUserControl1 = new MyUserControl();
myCustomTaskPaneCollection =
Globals.Factory.CreateCustomTaskPaneCollection
(null, null, "CustomTaskPanes", "CustomTaskPanes", this);
myCustomTaskPane = myCustomTaskPaneCollection.Add(myUserControl1, "My Task Pane");
myCustomTaskPane.Visible = true;
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
myCustomTaskPaneCollection.Dispose();
}
对于绑定.NET Framework 3.5的项目:
[VB]
Private myUserControl1 As MyUserControl
Private myCustomTaskPane As Microsoft.Office.Tools.CustomTaskPane
Private myCustomTaskPaneCollection As Microsoft.Office.Tools.CustomTaskPaneCollection
Private Sub ThisAddIn_Startup() Handles Me.Startup
myUserControl1 = New MyUserControl
myCustomTaskPaneCollection = New Microsoft.Office.Tools.CustomTaskPaneCollection _
(Me.ItemProvider, Me.HostContext, "MyTaskPane", Me, "MyTaskPane")
myCustomTaskPane = myCustomTaskPaneCollection.Add(myUserControl1, "My Task Pane")
myCustomTaskPane.Visible = True
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
myCustomTaskPaneCollection.Dispose()
End Sub
[C#]
private MyUserControl myUserControl1;
private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane;
private Microsoft.Office.Tools.CustomTaskPaneCollection myCustomTaskPaneCollection;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
myUserControl1 = new MyUserControl();
myCustomTaskPaneCollection = new Microsoft.Office.Tools.CustomTaskPaneCollection
(this.ItemProvider, this.HostContext, "MyTaskPane", this, "MyTaskPane");
myCustomTaskPane = myCustomTaskPaneCollection.Add(myUserControl1, "My Task Pane");
myCustomTaskPane.Visible = true;
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
myCustomTaskPaneCollection.Dispose();
}
想用Project 2007?没问题,检查一下这里。
所以,如果你正在使用 Visual Studio 2008,并且你没有 Project 2010项目模板,也没有问题。 Project 2010 可以承载Project 2007的外接程序。你需要做的只是去配置一下你的项目的设置,让 Project 2010可以运行起来。可执行文件的名字是WINPROJ.exe。
在解决方案浏览器中右击你的项目,选择属性,选择调试界面。下面的截屏显示了我的操作: