【问题标题】:How do I listen for a Project Change event from an MS Project VSTO Add-in?如何侦听来自 MS Project VSTO 加载项的项目更改事件?
【发布时间】:2018-07-19 02:13:55
【问题描述】:

我的外接程序有一个应用程序事件 ProjectBeforeTaskChange,可从 ThisAddIn 类获得。我需要的是一个 ProjectAfterTaskChange 事件,但这不存在。有没有办法从应用程序级加载项监听 Project Change 事件?

我的最终目标是在特定文本字段更改时设置三个数字字段。

【问题讨论】:

    标签: vsto ms-project


    【解决方案1】:

    ProjectBeforeTaskChange 是用于监视字段更改的正确事件。 “之前”一词是指处理程序可以通过将 Cancel 参数设置为 True 来阻止更改的事实。当用户更改任务字段时触发该事件。

    这是一个 vb.net 示例,它在 Text1 字段更改时递增 Number1 和 Number2 字段:

    Private Sub Application_ProjectBeforeTaskChange(tsk As MSProject.Task, Field As MSProject.PjField, NewVal As Object, ByRef Cancel As Boolean) Handles Application.ProjectBeforeTaskChange
    
        If Field = MSProject.PjField.pjTaskText1 Then
            Select Case NewVal
                Case Is = "In-work": tsk.Number1 = 50
                Case Is = "Complete": tsk.Number1 = 100
                Case Else: tsk.Number1 = 0
            End Select
        End If
    End Sub
    

    这是MSDN 页面。

    这是一个related post,展示了 c# 框架。

    【讨论】:

    • 问题是事件在更改生效之前触发。我需要根据字段 1 的更改结果来更改字段 2。因此,如果字段 1 是自定义列表并且我选择元素 B,那么字段 2 应该更改为 5。但是如果我选择元素 C,那么它应该更改为 7。使用 ProjectBeforeTaskChange,字段 2 的值会根据字段 1 更改前的值而更改。
    • NewVal 参数包含新值。使用它而不是任务字段值。
    • ...哇!当我阅读文档时,它只是没有点击。非常感谢!!!
    猜你喜欢
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多