2017-10-11 126 views
0

我在Visual Studio中做了一个WinForm程序,该程序可以自动创建和自动化MS-Project文件。用C#Interop隐藏MS-Project中的列

我使用这些引用:

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

在我的MS-项目文件的一些观点,我想自定义表中的列的显示。

为此,我使用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"); 

但是它似乎没有做任何事情比选择列更多。

我在这里研究:

Documentation : TableEditEx

回答

1

要隐藏的列(未删除),设置列宽= 0:

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

这样一来,用户可以取消隐藏列以后无需编辑,将其插入表。

1

好吧,

我发现我自己的解决方案。我试着做一个宏,以获得VBA代码隐藏一列,我得到这个:

SelectTaskColumn Column:="Resource Names" 
ColumnDelete 

我将它转换在C#代码:

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

和它的工作,谢谢喽!