0

我正在尝试创建一个动态的 MPP 文件。我遇到的问题是在其他任务(子任务)上创建任务

我正在尝试使用这段代码,在我插入第一个任务后,所有其他主要任务都是这个任务的子任务,而我想要的子任务以一种奇怪的方式出现。

    Task_0
       Task_1
          Task_2
            Task_3
               Task_4
               SubTaskName_4
            SubTaskName_3
          SubTaskName_2
        SubTaskName_1
     SubTaskName_0

我想要这样

  task 1
   subtask 1

  task 2
    subtask 2

我的代码如下

Microsoft.Office.Interop.MSProject.Task task;

string t1, t2;

for (int i = 0; i < 5; i++)
{
    task = project.Tasks.Add(

    "Task_" + i.ToString(), i + 1);
    t1 = "05/12/2012";
    t2 = "12/12/2012";

    /*TimeSpan span = Convert.ToDateTime(t2) - Convert.ToDateTime(t1);
    task.Duration = span.Hours;*/
    task.Start = t1;
    task.Finish = t2;
    task.ResourceNames = "Someone";

    //task.OutlineLevel = 1;

    task.Text1 = "Task_TestTask" + i.ToString();

     //also tried with this one
    /*Microsoft.Office.Interop.MSProject.Task newTask = task.OutlineChildren.Add("otraSubTarea_" + i.ToString(), task.ID + 1);
    newTask.Start = "12/12/2012";
    newTask.Finish = "12/12/2012";
    newTask.OutlineIndent();*/

    Microsoft.Office.Interop.MSProject.Task subTask = project.Tasks.Add("SubTaskName_" + i.ToString(), task.ID+1);
    subTask.Start = "05/12/2012";
    subTask.Finish = "12/12/2012";
    subTask.OutlineIndent();
}

我找不到太多这方面的信息。

4

1 回答 1

2

不确定您是否已经解决了这个问题,但是您的帖子帮助我解决了我遇到的缩进问题,所以这里有一个答案,希望也能解决您的问题。

我认为上面有两个问题可以解决

  1. 您需要两个索引(或从第一个索引计算第二个索引)。一个索引会跟踪您的任务及其命名以及附加的子任务。第二个索引需要跟踪实际任务的位置。例如,Task_1 插入位置 1,Task_2 插入位置 3,就像数组一样(任务索引是从 1 开始的,而不是从 0 开始的)
  2. 缩进任务后,所有子任务也将继承缩进,因此对于每个新的“父”任务,您都需要“缩进”。您可以假设您将对初始任务期望的每个父任务进行缩进

以下代码适用于我:

int iTaskIndex = 1;
for (int iTaskNameIndex = 1; iTaskNameIndex <= 5; iTaskNameIndex++)
{
    Task task = project.Tasks.Add("Task_" + iTaskNameIndex.ToString(), iTaskIndex);
    if (iTaskIndex > 1)
        task.OutlineOutdent();
    Task subTask = project.Tasks.Add("SubTaskName_" + iTaskNameIndex.ToString(), iTaskIndex + 1);
    subTask.OutlineIndent();
    iTaskIndex += 2;
}

插入新的父子任务对后,您需要

  1. 将任务命名索引增加 1
  2. 将任务位置索引增加 2
  3. 在添加新父任务之前(或何时)重置缩进

这给了我:

Task_1
    SubTaskName_1
Task_2
    SubTaskName_2
Task_3
    SubTaskName_3
Task_4
    SubTaskName_4
Task_5
    SubTaskName_5

您可以将这些索引组合在一起,只需将位置索引称为基于命名索引的计算(例如 iTaskIndex = ((iTaskNameIndex * 2) -1)),但我认为问题和代码使用两个单独的索引会更清晰

于 2012-10-11T00:42:43.493 回答