热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Project2010中添加自定义任务窗格

2019独角兽企业重金招聘Python工程师标准原文作者:NormEstabrook原文链接:http:blogs.msdn.combvstoar

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

原文作者:Norm Estabrook

原文链接:http://blogs.msdn.com/b/vsto/archive/2010/02/02/add-a-custom-task-pane-to-project-2010-norm-estabrook.aspx

  好消息, 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。尽管如此,确认版本一下也没什么大碍。这里有一片很有用的文章,主要就是介绍关于这个内容。How to: Target a Specific .NET Framework Version or Profile.

等你做完了所有上面的步骤,把下面的代码添加到项目中。

对于绑定 .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。

在解决方案浏览器中右击你的项目,选择属性,选择调试界面。下面的截屏显示了我的操作:

 2010060915444251.png


转载于:https://my.oschina.net/fenglinwansu/blog/2253395


推荐阅读
  • 本文讨论了在ASP中创建RazorFunctions.cshtml文件时出现的问题,即ASP.global_asax不存在于命名空间ASP中。文章提供了解决该问题的代码示例,并详细解释了代码中涉及的关键概念,如HttpContext、Request和RouteData等。通过阅读本文,读者可以了解如何解决该问题并理解相关的ASP概念。 ... [详细]
  • C#多线程解决界面卡死问题的完美解决方案
    当界面需要在程序运行中不断更新数据时,使用多线程可以解决界面卡死的问题。一个主线程创建界面,使用一个子线程执行程序并更新主界面,可以避免卡死现象。本文分享了一个例子,供大家参考。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
author-avatar
我怀念的2502909393_663
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有