zoukankan      html  css  js  c++  java
  • 学习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

  • 相关阅读:
    java线程间的协作
    java线程间的共享
    java多线程基础API
    java并发编程基础概念
    如何设计一套规则引擎系统
    Stream—一个早产的婴儿
    Java函数式编程的前生今世
    关于微服务划分的一些思考
    如何更优雅的给控制器 “减负”
    PHP简洁之道
  • 原文地址:https://www.cnblogs.com/meiweijun/p/1609828.html
Copyright © 2011-2022 走看看