2016-10-04 68 views
0

以下代码(在VSTO插件的标准ThisAddIn类中)检索有关要添加到MS Project(2013)的任务的信息,然后将实际任务添加到项目任务集合。问题是项目允许逐一添加任务,并在每次将任务添加到Tasks集合时重新绘制(刷新)项目视图。它看起来很烦人。到目前为止我找到并使用了Application.ScreenUpdating属性来隐藏闪烁。MS Project的VSTO插件:一次显示任务

这将是很好的准备任务的集合,并将它们所有在一起附加到活动的项目。任何人都可以更有经验,请指出一种方法来实现这一点?如果完全可以使用当前的MS Project Add-In API?

非常感谢。

.... 
using MSProject = Microsoft.Office.Interop.MSProject; 
.... 

public partial class ThisAddIn 
{ 
    .... 

    private void ShowTasks() 
    { 
     MSProject.Project project = this.Application.ActiveProject; 
     // TaskInfo is a custom DTO type 
     IEnumerable<TaskInfo> dataSource = GetDataSourceSomehow(); 

     this.Application.ScreenUpdating = false; 
     this.Application.Calculation = MSProject.PjCalculation.pjManual; 

     foreach(TaskInfo info in dataSource) 
     { 
      MSProject.Task task = project.Tasks.Add(info.TaskName); 
     } 

     this.Application.ScreenUpdating = true; 
    } 
} 
+0

的技术,你可以尝试,是对所有任务添加到一个新的.xml或Excel文件。然后,您可以使自动项目打开文件并合并到活动项目中。这可能会更快,并会一次发生。如果您尝试,请告诉我们结果。是否有屏幕更新和计算= False帮助? –

+0

感谢您的回复!是的,我已经在文件中准备了任务数据,在我的情况下是.csv,然后手动导入它。它没问题,但值得注意的是,MS Project试图调整传入数据而不是默默接受数据。你刚刚让我想到的是自动导入.csv。谢谢。 – watchaglass

回答