我如何知道某个活动是否已在工作流程设计器中删除或重新定位?

时间:2011-10-19 11:53:11

标签: workflow-foundation workflow-foundation-4 workflow-activity

我如何知道某个活动是否已在工作流程设计器中删除或重新定位?活动的卸载事件在两种情况下都会触发

2 个答案:

答案 0 :(得分:1)

戴夫的回答是偏正的。当您移动活动时,也会调用remove事件,因此对于这两种情况,验证都是正确的。我使用activity的modelItem.Parent。 实际删除活动时,modelItem.Parent为null;如果刚刚移动,则为!= null。

答案 1 :(得分:0)

您应该能够通过使用以下事件找出活动是否已被删除:

ModelService ms = workflowdesigner.Context.Services.GetService<ModelService>();
ms.ModelChanged += new EventHandler<ModelChangedEventArgs>(Designer_ModelServiceChanged);

然后,您可以通过执行以下操作找到已删除的活动:

private void Designer_ModelChanged( object sender, EventArgs e )
{
           //iterate through model items and find your activity
           if (null != eventArgs.ItemsRemoved)
           {
                foreach (ModelItem mi in eventArgs.ItemsRemoved)
                {
                    //find your activity
                }
            }
}

查看由Bruce Bukovics撰写的“Pro WF Windows Workflow in .NET 4”一书