我无法访问 MS Project VSTO 加载项中的列
I can't access columns in MS Project VSTO Add-In
我想获取并设置 Microsoft.Office.Interop.MSProject.Task
对象显示在 MS Project VSTO 加载项的 Show on Board
和 Board Status
列中。但似乎无法以编程方式访问这些对象成员。有没有人建议如何访问这些成员?
使用FieldNameToFieldConstant to get the field constant for the custom field and then use GetField获取该字段的显示值(总是一个字符串)。这是一个 vba 示例,可以帮助您入门;根据需要适应 C#。
Dim fldShowOnBoard As Long
fldShowOnBoard = FieldNameToFieldConstant("Show on Board")
Dim fldStatus
fldStatus = FieldNameToFieldConstant("Board Status")
If ActiveCell.Task.GetField(fldShowOnBoard) = "Yes" Then
Dim taskStatus As String
taskStatus = ActiveCell.Task.GetField(fldStatus)
' do something....
End If
在 Rachel Hettinger 的帮助下,我找到了解决问题的方法。
foreach (Microsoft.Office.Interop.MSProject.Task task in Globals.ThisAddin.Application.ActiveProject.Tasks)
{
Microsoft.Office.Interop.MSProject.PjField fldShowOnBoard = (Microsoft.Office.Interop.MSProject.PjField)188745088;
Microsoft.Office.Interop.MSProject.PjField fldStatus = (Microsoft.Office.Interop.MSProject.PjField)188745087;
string taskShowOnBoard = task.GetField(fldShowOnBoard);
string taskStatus = task.GetField(fldStatus);
}
我想获取并设置 Microsoft.Office.Interop.MSProject.Task
对象显示在 MS Project VSTO 加载项的 Show on Board
和 Board Status
列中。但似乎无法以编程方式访问这些对象成员。有没有人建议如何访问这些成员?
使用FieldNameToFieldConstant to get the field constant for the custom field and then use GetField获取该字段的显示值(总是一个字符串)。这是一个 vba 示例,可以帮助您入门;根据需要适应 C#。
Dim fldShowOnBoard As Long
fldShowOnBoard = FieldNameToFieldConstant("Show on Board")
Dim fldStatus
fldStatus = FieldNameToFieldConstant("Board Status")
If ActiveCell.Task.GetField(fldShowOnBoard) = "Yes" Then
Dim taskStatus As String
taskStatus = ActiveCell.Task.GetField(fldStatus)
' do something....
End If
在 Rachel Hettinger 的帮助下,我找到了解决问题的方法。
foreach (Microsoft.Office.Interop.MSProject.Task task in Globals.ThisAddin.Application.ActiveProject.Tasks)
{
Microsoft.Office.Interop.MSProject.PjField fldShowOnBoard = (Microsoft.Office.Interop.MSProject.PjField)188745088;
Microsoft.Office.Interop.MSProject.PjField fldStatus = (Microsoft.Office.Interop.MSProject.PjField)188745087;
string taskShowOnBoard = task.GetField(fldShowOnBoard);
string taskStatus = task.GetField(fldStatus);
}