学习WF笔记9 自定义活动中事件类型的属性(3)

在活动的属性窗口中有两种类型的属性,一种是在第2节讲到的普通属性,另外一种是事件类型的属性。用户可以通过该属性创建相应的事件,例如:利用Code活动的“ExecuteCode”属性来创建一个事件,开发人员可以在该事件中执行相应的业务操作。在自定义活动中创建事件类型属性与创建普通属性的方法基本相同,也是通过“DependencyProperty”属性来对事件类型的属性进行管理,而它所对应的属性类型不再是“String”或“int,而是“event”类型的属性,其代码如下所示。

Public     static       DependencyProperty       PrintEvent=DependencyProperty.Register(“Print”,typeof(EventHandler),typeof(Activity1));

[Description(“打印一个字符串”)]

[Browsable(true)]

Public event EventHandler Print

{

       add{

              base.AddHandler(Activity1.PrintEvent,value);

}

remove

{

       base.RemoveHandler(Activity1.PrintEvent,value);

}

}

通过以上步骤就实现了一个事件类型属性的定义,但该属性还不能执行。用户必须重载父类的“Execute”方法,并通过“RaiseEvent”来加载相应“DependencyProperty”属性,其代码如下所示。

Protected override ActivityExecutionStatus Execute(ActivityExecutionContext context)

{

       base.RaiseEvent(Activity1.PrintEvent,this,EventArgs.Empty);

       return ActivityExecutionStatus.Closed;

}

 

创建自定义活动

用户可以使用以上代码创建自定义活动,编译成功后将它添加到工作流设计界面中,如图1所示,在属性窗口中通过“Print”属性创建一个可用于执行的事件“ExePrint”,其代码如下所示。

private void ExePrint(object sender,EventArgs e)

{

Console.Write(“自定义活动中定义的方法PrintEvent被执行!\r\n);
}

1

运行工作流项目,如图2所示,用户通过属性“Print”创建的事件“ExePrint”被执行

2

原文地址:https://www.cnblogs.com/meiweijun/p/1609828.html