使用C#Interop在MS Project中隐藏列

使用C#Interop在MS Project中隐藏列,c#,com-interop,ms-project,office-automation,C#,Com Interop,Ms Project,Office Automation,我在VisualStudio上做一个WinForm程序,它自动创建和自动化MS项目文件 我使用这些参考资料: Microsoft Office 16.0 Object Library Microsoft Office Project 16.0 Object Library Microsoft Project Task Launch Control 在我的MS Project文件中的某个时刻,我希望自定义表中列的显示 为此,我使用TableEditEx函数。我已经制作了一个新的定制专栏,如下所示

我在VisualStudio上做一个WinForm程序,它自动创建和自动化MS项目文件

我使用这些参考资料:

Microsoft Office 16.0 Object Library
Microsoft Office Project 16.0 Object Library
Microsoft Project Task Launch Control
在我的MS Project文件中的某个时刻,我希望自定义表中列的显示

为此,我使用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");
现在我想隐藏列“资源名称”,例如。为此,我尝试了以下代码:

projApp.Application.SelectTaskColumn(Column: "Resource Names");
projApp.Application.TableEditEx(Name: "&Entry", TaskTable: true, Create: false, ShowInMenu: false);
projApp.Application.TableApply(Name: "&Entry");
但它似乎只做了选择列的事情

我在这里研究过:

好的

我自己找到了解决办法。我试着用宏来让VBA代码隐藏一列,结果是:

SelectTaskColumn Column:="Resource Names"
ColumnDelete
我把它转换成C代码:

它成功了,谢谢我自己

好的

我自己找到了解决办法。我试着用宏来让VBA代码隐藏一列,结果是:

SelectTaskColumn Column:="Resource Names"
ColumnDelete
我把它转换成C代码:

它成功了,谢谢我自己

要隐藏列(而不是删除列),请将列宽设置为0:

projApp.Application.TableEditEx(Name: "&Entry", TaskTable: true, FieldName: "Resource Names", Width: 0);
projApp.Application.TableApply(Name: "&Entry");
这样,用户可以在以后取消隐藏该列,而无需编辑表格以插入该列。

要隐藏该列(而不是删除该列),请将列宽设置为0:

projApp.Application.TableEditEx(Name: "&Entry", TaskTable: true, FieldName: "Resource Names", Width: 0);
projApp.Application.TableApply(Name: "&Entry");
这样,用户可以在以后取消隐藏该列,而无需编辑表以插入该列