使用 C# Interop 隐藏 MS-Project 中的列

Hide a column in MS-Project with C# Interop

我正在 Visual Studio 上做一个 WinForm 程序,它自动创建和自动化 MS-Project 文件。

我使用了那些参考资料:

Microsoft Office 16.0 Object Library
Microsoft Office Project 16.0 Object Library
Microsoft Project Task Launch Control

在我的 MS-Project 文件中的某个位置,我想自定义 table 中列的显示。

为此,我使用了 TableEditEx 函数。我已经制作了一个新的自定义专栏,如下所示:

Microsoft.Office.Interop.MSProject.Application projApp = new Microsoft.Office.Interop.MSProject.Application();
projApp.Application.SelectTaskColumn(Column: "Add New Column");
projApp.Application.TableEditEx(Name: "&Entry", TaskTable: true, NewName: "Progression", NewFieldName: "Text1", Title: "Completion", ShowInMenu: true, Width: 12);
projApp.Application.TableApply(Name: "&Entry");

现在我想隐藏列 "Resource Names" 例如。为此,我尝试了以下代码:

projApp.Application.SelectTaskColumn(Column: "Resource Names");
projApp.Application.TableEditEx(Name: "&Entry", TaskTable: true, Create: false, ShowInMenu: false);
projApp.Application.TableApply(Name: "&Entry");

但它似乎除了选择列之外没有做任何事情。

我在这里研究过 :

Documentation : TableEditEx

好的,

我自己找到了解决办法。我试过做一个宏来获取 VBA 代码来隐藏一列,我得到了这个:

SelectTaskColumn Column:="Resource Names"
ColumnDelete

然后我用 C# 代码转换了它:

projApp.Application.SelectTaskColumn(Column: "Resource Names");
projApp.Application.ColumnDelete();

成功了,谢谢我!

要隐藏列(而不是删除它),设置列宽 = 0:

projApp.Application.TableEditEx(Name: "&Entry", TaskTable: true, FieldName: "Resource Names", Width: 0);
projApp.Application.TableApply(Name: "&Entry");

这样,用户以后可以取消隐藏该列,而无需编辑 table 来插入它。